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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/data/standards/OpenStudio_Standards.xlsx +0 -0
  3. data/data/standards/OpenStudio_Standards_boilers.json +62 -4
  4. data/data/standards/OpenStudio_Standards_chillers.json +778 -68
  5. data/data/standards/OpenStudio_Standards_construction_sets.json +52 -93
  6. data/data/standards/OpenStudio_Standards_curve_biquadratics.json +36 -36
  7. data/data/standards/OpenStudio_Standards_curve_quadratics.json +3 -3
  8. data/data/standards/OpenStudio_Standards_heat_pumps.json +840 -0
  9. data/data/standards/OpenStudio_Standards_heat_pumps_heating.json +352 -0
  10. data/data/standards/OpenStudio_Standards_heat_rejection.json +48 -0
  11. data/data/standards/OpenStudio_Standards_motors.json +270 -0
  12. data/data/standards/OpenStudio_Standards_space_types.json +10390 -2824
  13. data/data/standards/OpenStudio_Standards_unitary_acs.json +794 -18
  14. data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.ddy +538 -0
  15. data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.epw +8768 -0
  16. data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.stat +493 -0
  17. data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.ddy +536 -0
  18. data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.epw +8768 -0
  19. data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.stat +554 -0
  20. data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.ddy +536 -0
  21. data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.epw +8768 -0
  22. data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.stat +554 -0
  23. data/data/weather/envelope_info.csv +6 -0
  24. data/lib/openstudio-standards.rb +10 -11
  25. data/lib/openstudio-standards/btap/compliance.rb +251 -969
  26. data/lib/openstudio-standards/btap/envelope.rb +1 -1
  27. data/lib/openstudio-standards/btap/fileio.rb +37 -5
  28. data/lib/openstudio-standards/btap/geometry.rb +27 -17
  29. data/lib/openstudio-standards/btap/hvac.rb +80 -27
  30. data/lib/openstudio-standards/hvac_sizing/{HVACSizing.CoilHeatingDXMultiSpeed.rb → Siz.CoilHeatingDXMultiSpeed.rb} +0 -0
  31. data/lib/openstudio-standards/hvac_sizing/Siz.ControllerOutdoorAir.rb +30 -4
  32. data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerTwoSpeed.rb +61 -5
  33. data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerVariableSpeed.rb +37 -7
  34. data/lib/openstudio-standards/hvac_sizing/Siz.DistrictCooling.rb +27 -0
  35. data/lib/openstudio-standards/hvac_sizing/Siz.DistrictHeating.rb +27 -0
  36. data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsConstantSpeed.rb +55 -0
  37. data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsVariableSpeed.rb +55 -0
  38. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +51 -9
  39. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +99 -17
  40. data/lib/openstudio-standards/hvac_sizing/Siz.PumpConstantSpeed.rb +1 -1
  41. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +29 -6
  42. data/lib/openstudio-standards/hvac_sizing/Siz.WaterHeaterMixed.rb +16 -0
  43. data/lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb +43 -48
  44. data/lib/openstudio-standards/prototypes/Prototype.ControllerWaterCoil.rb +5 -9
  45. data/lib/openstudio-standards/prototypes/Prototype.Fan.rb +68 -0
  46. data/lib/openstudio-standards/prototypes/Prototype.FanConstantVolume.rb +39 -43
  47. data/lib/openstudio-standards/prototypes/Prototype.FanOnOff.rb +49 -51
  48. data/lib/openstudio-standards/prototypes/Prototype.FanVariableVolume.rb +55 -61
  49. data/lib/openstudio-standards/prototypes/Prototype.FanZoneExhaust.rb +8 -10
  50. data/lib/openstudio-standards/prototypes/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +15 -20
  51. data/lib/openstudio-standards/prototypes/Prototype.Model.hvac.rb +330 -322
  52. data/lib/openstudio-standards/prototypes/Prototype.Model.rb +501 -446
  53. data/lib/openstudio-standards/prototypes/Prototype.Model.swh.rb +221 -230
  54. data/lib/openstudio-standards/prototypes/Prototype.add_objects.rb +0 -2
  55. data/lib/openstudio-standards/prototypes/Prototype.full_service_restaurant.rb +130 -137
  56. data/lib/openstudio-standards/prototypes/Prototype.high_rise_apartment.rb +374 -291
  57. data/lib/openstudio-standards/prototypes/Prototype.hospital.rb +146 -193
  58. data/lib/openstudio-standards/prototypes/Prototype.hvac_systems.rb +1315 -1113
  59. data/lib/openstudio-standards/prototypes/Prototype.large_hotel.rb +65 -88
  60. data/lib/openstudio-standards/prototypes/Prototype.large_office.rb +101 -156
  61. data/lib/openstudio-standards/prototypes/Prototype.medium_office.rb +46 -96
  62. data/lib/openstudio-standards/prototypes/Prototype.mid_rise_apartment.rb +113 -123
  63. data/lib/openstudio-standards/prototypes/Prototype.outpatient.rb +356 -345
  64. data/lib/openstudio-standards/prototypes/Prototype.primary_school.rb +48 -103
  65. data/lib/openstudio-standards/prototypes/Prototype.quick_service_restaurant.rb +115 -123
  66. data/lib/openstudio-standards/prototypes/Prototype.retail_standalone.rb +30 -39
  67. data/lib/openstudio-standards/prototypes/Prototype.retail_stripmall.rb +32 -45
  68. data/lib/openstudio-standards/prototypes/Prototype.secondary_school.rb +98 -258
  69. data/lib/openstudio-standards/prototypes/Prototype.small_hotel.rb +429 -474
  70. data/lib/openstudio-standards/prototypes/Prototype.small_office.rb +28 -36
  71. data/lib/openstudio-standards/prototypes/Prototype.strip_model.rb +7 -7
  72. data/lib/openstudio-standards/prototypes/Prototype.utilities.rb +172 -146
  73. data/lib/openstudio-standards/prototypes/Prototype.warehouse.rb +46 -53
  74. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +885 -707
  75. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +48 -57
  76. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +24 -31
  77. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +80 -93
  78. data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +69 -0
  79. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +60 -72
  80. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +104 -108
  81. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +190 -198
  82. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +134 -146
  83. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +56 -60
  84. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +151 -161
  85. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +30 -34
  86. data/lib/openstudio-standards/standards/Standards.Construction.rb +116 -132
  87. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +138 -0
  88. data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +11 -0
  89. data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +11 -0
  90. data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +16 -0
  91. data/lib/openstudio-standards/standards/Standards.Fan.rb +190 -236
  92. data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -2
  93. data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -2
  94. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +168 -14
  95. data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -2
  96. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +33 -0
  97. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +83 -0
  98. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +22 -0
  99. data/lib/openstudio-standards/standards/Standards.Model.rb +2385 -1622
  100. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +83 -35
  101. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +805 -395
  102. data/lib/openstudio-standards/standards/Standards.Pump.rb +139 -119
  103. data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -2
  104. data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +16 -15
  105. data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +35 -0
  106. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +7 -13
  107. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +144 -59
  108. data/lib/openstudio-standards/standards/Standards.Space.rb +1509 -1326
  109. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +254 -262
  110. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +105 -105
  111. data/lib/openstudio-standards/standards/Standards.Surface.rb +27 -31
  112. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +882 -157
  113. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +179 -69
  114. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +75 -0
  115. data/lib/openstudio-standards/utilities/logging.rb +31 -38
  116. data/lib/openstudio-standards/utilities/simulation.rb +118 -82
  117. data/lib/openstudio-standards/version.rb +1 -1
  118. data/lib/openstudio-standards/weather/Weather.Model.rb +382 -390
  119. data/lib/openstudio-standards/weather/Weather.stat_file.rb +159 -78
  120. metadata +59 -6
@@ -1,38 +1,40 @@
1
1
 
2
2
  # Extend the class
3
3
  class OpenStudio::Model::Model
4
-
5
4
  def run_simulation_and_log_errors(run_dir = "#{Dir.pwd}/Run")
6
-
7
5
  # Make the directory if it doesn't exist
8
- if !Dir.exists?(run_dir)
9
- Dir.mkdir(run_dir)
6
+ unless Dir.exist?(run_dir)
7
+ FileUtils.mkdir_p(run_dir)
10
8
  end
11
-
9
+
12
10
  # Save the model to energyplus idf
13
11
  idf_name = 'in.idf'
14
12
  osm_name = 'in.osm'
15
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', "Starting simulation here: #{run_dir}.")
13
+ OpenStudio.logFree(OpenStudio::Debug, 'openstudio.model.Model', "Starting simulation here: #{run_dir}.")
14
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "Running simulation #{run_dir}.")
16
15
  forward_translator = OpenStudio::EnergyPlus::ForwardTranslator.new
17
16
  idf = forward_translator.translateModel(self)
18
- idf_path = OpenStudio::Path.new("#{run_dir}/#{idf_name}")
17
+ idf_path = OpenStudio::Path.new("#{run_dir}/#{idf_name}")
19
18
  osm_path = OpenStudio::Path.new("#{run_dir}/#{osm_name}")
20
- idf.save(idf_path,true)
21
- self.save(osm_path,true)
22
-
19
+ idf.save(idf_path, true)
20
+ save(osm_path, true)
21
+
23
22
  # Set up the simulation
24
23
  # Find the weather file
25
- epw_path = self.get_full_weather_file_path
24
+ epw_path = get_full_weather_file_path
26
25
  if epw_path.empty?
27
26
  return false
28
27
  end
29
28
  epw_path = epw_path.get
30
-
29
+
30
+ # close current sql file
31
+ resetSqlFile
32
+
31
33
  # If running on a regular desktop, use RunManager.
32
34
  # If running on OpenStudio Server, use WorkFlowMananger
33
- # to avoid slowdown from the run.
35
+ # to avoid slowdown from the run.
34
36
  use_runmanager = true
35
-
37
+
36
38
  begin
37
39
  require 'openstudio-workflow'
38
40
  use_runmanager = false
@@ -42,86 +44,122 @@ class OpenStudio::Model::Model
42
44
 
43
45
  sql_path = nil
44
46
  if use_runmanager
45
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Running with RunManager.')
47
+ OpenStudio.logFree(OpenStudio::Debug, 'openstudio.model.Model', 'Running with RunManager.')
46
48
 
47
49
  # Find EnergyPlus
48
50
  ep_dir = OpenStudio.getEnergyPlusDirectory
49
51
  ep_path = OpenStudio.getEnergyPlusExecutable
50
52
  ep_tool = OpenStudio::Runmanager::ToolInfo.new(ep_path)
51
- idd_path = OpenStudio::Path.new(ep_dir.to_s + "/Energy+.idd")
53
+ idd_path = OpenStudio::Path.new(ep_dir.to_s + '/Energy+.idd')
52
54
  output_path = OpenStudio::Path.new("#{run_dir}/")
53
-
55
+
54
56
  # Make a run manager and queue up the run
55
57
  run_manager_db_path = OpenStudio::Path.new("#{run_dir}/run.db")
56
58
  # HACK: workaround for Mac with Qt 5.4, need to address in the future.
57
- OpenStudio::Application::instance().application(false)
59
+ OpenStudio::Application.instance.application(false)
58
60
  run_manager = OpenStudio::Runmanager::RunManager.new(run_manager_db_path, true, false, false, false)
59
- job = OpenStudio::Runmanager::JobFactory::createEnergyPlusJob(ep_tool,
61
+ job = OpenStudio::Runmanager::JobFactory.createEnergyPlusJob(ep_tool,
60
62
  idd_path,
61
63
  idf_path,
62
64
  epw_path,
63
65
  output_path)
64
-
66
+
65
67
  run_manager.enqueue(job, true)
66
68
 
67
69
  # Start the run and wait for it to finish.
68
70
  while run_manager.workPending
69
71
  sleep 1
70
- OpenStudio::Application::instance.processEvents
72
+ OpenStudio::Application.instance.processEvents
71
73
  end
72
-
74
+
73
75
  sql_path = OpenStudio::Path.new("#{run_dir}/EnergyPlus/eplusout.sql")
74
-
75
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished run.')
76
-
76
+
77
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished run.')
78
+
77
79
  elsif OpenStudio::Workflow::VERSION >= '1.0.0' # Use the OS 2.0 openstudio-workflow gem
78
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Running with OS 2.0 openstudio-workflow gem.')
80
+ OpenStudio.logFree(OpenStudio::Debug, 'openstudio.model.Model', 'Running with OS 2.0 openstudio-workflow gem.')
79
81
 
80
82
  # Write OSW file for the simulation
81
- require 'JSON'
83
+ require 'json'
84
+ osw_dir = File.dirname(osm_path.to_s)
82
85
  osw_hash = {
83
- run_dir: Dir.pwd,
84
- seed_model: File.absolute_path(idf_path.to_s),
86
+ run_directory: File.join(osw_dir, 'run'),
87
+ seed_file: File.absolute_path(osm_path.to_s),
85
88
  weather_file: File.absolute_path(epw_path.to_s),
86
89
  steps: []
87
90
  }
88
- osw_path = File.join(Dir.pwd, 'workflow.osw')
91
+ osw_path = File.join(osw_dir, 'workflow.osw')
89
92
  File.open(osw_path, 'wb') { |f| f << JSON.pretty_generate(osw_hash) }
90
93
 
91
- # Create local adapters
92
- adapter_options = {workflow_filename: File.basename(osw_path), output_directory: File.join(Dir.pwd, 'run')}
93
- input_adapter = OpenStudio::Workflow.load_input_adapter 'local', adapter_options
94
- output_adapter = OpenStudio::Workflow.load_output_adapter 'local', adapter_options
95
-
96
94
  # Run workflow.osw
97
- run_options = Hash.new
95
+ run_options = {}
96
+ #run_options[:debug] = true
97
+
98
+ # jobs for running IDF
99
+ # run_options[:jobs] = [
100
+ # { state: :queued, next_state: :initialization, options: { initial: true } },
101
+ # { state: :initialization, next_state: :preprocess, job: :RunInitialization,
102
+ # file: 'openstudio/workflow/jobs/run_initialization.rb', options: {} },
103
+ # { state: :preprocess, next_state: :simulation, job: :RunPreprocess,
104
+ # file: 'openstudio/workflow/jobs/run_preprocess.rb' , options: {} },
105
+ # { state: :simulation, next_state: :finished, job: :RunEnergyPlus,
106
+ # file: 'openstudio/workflow/jobs/run_energyplus.rb', options: {} },
107
+ # { state: :finished },
108
+ # { state: :errored }
109
+ # ]
110
+
111
+ # jobs for running OSM
98
112
  run_options[:jobs] = [
99
113
  { state: :queued, next_state: :initialization, options: { initial: true } },
100
- { state: :initialization, next_state: :preprocess, job: :RunInitialization,
101
- file: './jobs/run_initialization.rb', options: {} },
114
+ { state: :initialization, next_state: :os_measures, job: :RunInitialization,
115
+ file: 'openstudio/workflow/jobs/run_initialization.rb', options: {} },
116
+ { state: :os_measures, next_state: :translator, job: :RunOpenStudioMeasures,
117
+ file: 'openstudio/workflow/jobs/run_os_measures.rb', options: {} },
118
+ { state: :translator, next_state: :ep_measures, job: :RunTranslation,
119
+ file: 'openstudio/workflow/jobs/run_translation.rb', options: {} },
120
+ { state: :ep_measures, next_state: :preprocess, job: :RunEnergyPlusMeasures,
121
+ file: 'openstudio/workflow/jobs/run_ep_measures.rb', options: {} },
102
122
  { state: :preprocess, next_state: :simulation, job: :RunPreprocess,
103
- file: './jobs/run_preprocess.rb' , options: {} },
104
- { state: :simulation, next_state: :finished, job: :RunEnergyPlus,
105
- file: './jobs/run_energyplus.rb', options: {} },
123
+ file: 'openstudio/workflow/jobs/run_preprocess.rb', options: {} },
124
+ { state: :simulation, next_state: :reporting_measures, job: :RunEnergyPlus,
125
+ file: 'openstudio/workflow/jobs/run_energyplus.rb', options: {} },
126
+ { state: :reporting_measures, next_state: :postprocess, job: :RunReportingMeasures,
127
+ file: 'openstudio/workflow/jobs/run_reporting_measures.rb', options: {} },
128
+ { state: :postprocess, next_state: :finished, job: :RunPostprocess,
129
+ file: 'openstudio/workflow/jobs/run_postprocess.rb', options: {} },
106
130
  { state: :finished },
107
131
  { state: :errored }
108
132
  ]
109
- k = OpenStudio::Workflow::Run.new input_adapter, output_adapter, File.dirname(osw_path), run_options
133
+
134
+ begin
135
+ # earlier version of the Workflow::Run method
136
+
137
+ # Create local adapters
138
+ adapter_options = { workflow_filename: File.basename(osw_path), output_directory: File.join(Dir.pwd, 'run') }
139
+ input_adapter = OpenStudio::Workflow.load_input_adapter 'local', adapter_options
140
+ output_adapter = OpenStudio::Workflow.load_output_adapter 'local', adapter_options
141
+
142
+ k = OpenStudio::Workflow::Run.new input_adapter, output_adapter, File.dirname(osw_path), run_options
143
+ rescue
144
+ # current version of the Workflow::Run method
145
+ k = OpenStudio::Workflow::Run.new osw_path, run_options
146
+ end
147
+
110
148
  final_state = k.run
111
149
 
112
150
  # Check run status and return the sql_path
113
151
  if final_state == :finished
114
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished run.')
152
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished run.')
115
153
  else
116
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Run completed with errors.')
154
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Run completed with errors.')
117
155
  end
118
- sql_path = OpenStudio::Path.new("#{Dir.pwd}/run/eplusout.sql")
119
-
120
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished simulation.')
156
+ sql_path = OpenStudio::Path.new(File.join(osw_dir, 'run/eplusout.sql'))
157
+
158
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished simulation.')
121
159
 
122
160
  else # Use the pre OS 2.0 openstudio-workflow gem
123
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Running with pre OS 2.0 openstudio-workflow gem.')
124
-
161
+ OpenStudio.logFree(OpenStudio::Debug, 'openstudio.model.Model', 'Running with pre OS 2.0 openstudio-workflow gem.')
162
+
125
163
  # Copy the weather file to this directory
126
164
  FileUtils.copy(epw_path.to_s, run_dir)
127
165
 
@@ -130,69 +168,67 @@ class OpenStudio::Model::Model
130
168
  final_state = sim.run
131
169
 
132
170
  if final_state == :finished
133
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished run.')
171
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished run.')
134
172
  end
135
-
173
+
136
174
  sql_path = OpenStudio::Path.new("#{run_dir}/run/eplusout.sql")
137
-
175
+
138
176
  end
139
-
140
- # TODO Delete the eplustbl.htm and other files created
177
+
178
+ # TODO: Delete the eplustbl.htm and other files created
141
179
  # by the run for cleanliness.
142
-
143
- if OpenStudio::exists(sql_path)
180
+
181
+ if OpenStudio.exists(sql_path)
144
182
  sql = OpenStudio::SqlFile.new(sql_path)
145
183
  # Check to make sure the sql file is readable,
146
184
  # which won't be true if EnergyPlus crashed during simulation.
147
- if !sql.connectionOpen
148
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "The run failed, cannot create model. Look at the eplusout.err file in #{File.dirname(sql_path.to_s)} to see the cause.")
185
+ unless sql.connectionOpen
186
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "The run failed, cannot create model. Look at the eplusout.err file in #{File.dirname(sql_path.to_s)} to see the cause.")
149
187
  return false
150
188
  end
151
189
  # Attach the sql file from the run to the model
152
- self.setSqlFile(sql)
153
- else
154
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "Results for the run couldn't be found here: #{sql_path}.")
190
+ setSqlFile(sql)
191
+ else
192
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "Results for the run couldn't be found here: #{sql_path}.")
155
193
  return false
156
194
  end
157
-
195
+
158
196
  # Report severe errors in the run
159
- error_query = "SELECT ErrorMessage
160
- FROM Errors
197
+ error_query = "SELECT ErrorMessage
198
+ FROM Errors
161
199
  WHERE ErrorType in(1,2)"
162
- errs = self.sqlFile.get.execAndReturnVectorOfString(error_query)
200
+ errs = sqlFile.get.execAndReturnVectorOfString(error_query)
163
201
  if errs.is_initialized
164
202
  errs = errs.get
165
203
  end
166
204
 
167
205
  # Check that the run completed
168
- completed_query = "SELECT Completed FROM Simulations"
169
- completed = self.sqlFile.get.execAndReturnFirstDouble(completed_query)
206
+ completed_query = 'SELECT Completed FROM Simulations'
207
+ completed = sqlFile.get.execAndReturnFirstDouble(completed_query)
170
208
  if completed.is_initialized
171
209
  completed = completed.get
172
- if completed == 0
173
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "The run did not finish and had following errors: #{errs.join('\n')}")
210
+ if completed.zero?
211
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "The run did not finish and had following errors: #{errs.join('\n')}")
174
212
  return false
175
213
  end
176
- end
177
-
214
+ end
215
+
178
216
  # Check that the run completed with no severe errors
179
- completed_successfully_query = "SELECT CompletedSuccessfully FROM Simulations"
180
- completed_successfully = self.sqlFile.get.execAndReturnFirstDouble(completed_successfully_query)
217
+ completed_successfully_query = 'SELECT CompletedSuccessfully FROM Simulations'
218
+ completed_successfully = sqlFile.get.execAndReturnFirstDouble(completed_successfully_query)
181
219
  if completed_successfully.is_initialized
182
220
  completed_successfully = completed_successfully.get
183
- if completed_successfully == 0
184
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "The run failed with the following severe or fatal errors: #{errs.join('\n')}")
221
+ if completed_successfully.zero?
222
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "The run failed with the following severe or fatal errors: #{errs.join('\n')}")
185
223
  return false
186
224
  end
187
- end
188
-
225
+ end
226
+
189
227
  # Log any severe errors that did not cause simulation to fail
190
- if errs.size > 0
191
- OpenStudio::logFree(OpenStudio::Warn, 'openstudio.model.Model', "The run completed but had the following severe errors: #{errs.join('\n')}")
228
+ unless errs.empty?
229
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Model', "The run completed but had the following severe errors: #{errs.join('\n')}")
192
230
  end
193
231
 
194
232
  return true
195
-
196
233
  end
197
-
198
- end
234
+ end
@@ -1,3 +1,3 @@
1
1
  module OpenstudioStandards
2
- VERSION = "0.1.4"
2
+ VERSION = '0.1.5'.freeze
3
3
  end
@@ -1,19 +1,15 @@
1
1
 
2
2
  # Open the class to add methods to put weather info into the model
3
3
  class OpenStudio::Model::Model
4
-
5
4
  # Helper method to set the weather file, import the design days, set
6
5
  # water mains temperature, and set ground temperature.
7
6
  # Based on ChangeBuildingLocation measure by Nicholas Long
8
7
 
9
- def add_design_days_and_weather_file(building_type, building_vintage, climate_zone, epw_file)
8
+ def add_design_days_and_weather_file(building_type, template, climate_zone, epw_file)
9
+ require_relative 'Weather.stat_file'
10
10
 
11
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.weather.Model', "Started adding weather file for climate zone: #{climate_zone}.")
11
12
 
12
- require_relative 'Weather.stat_file'
13
-
14
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.weather.Model', "Started adding weather file for climate zone: #{climate_zone}.")
15
-
16
-
17
13
  # Define the weather file for each climate zone
18
14
  climate_zone_weather_file_map = {
19
15
  'ASHRAE 169-2006-1A' => 'USA_FL_Miami.Intl.AP.722020_TMY3.epw',
@@ -35,32 +31,51 @@ class OpenStudio::Model::Model
35
31
  'ASHRAE 169-2006-7B' => 'USA_MN_Duluth.Intl.AP.727450_TMY3.epw',
36
32
  'ASHRAE 169-2006-8A' => 'USA_AK_Fairbanks.Intl.AP.702610_TMY3.epw',
37
33
  'ASHRAE 169-2006-8B' => 'USA_AK_Fairbanks.Intl.AP.702610_TMY3.epw',
38
- #For measure input
39
- 'NECB HDD Method' => "#{epw_file}",
40
- #For testing
41
- 'NECB-CNEB-5' => "#{epw_file}",
42
- 'NECB-CNEB-6' => "#{epw_file}",
43
- 'NECB-CNEB-7a' => "#{epw_file}",
44
- 'NECB-CNEB-7b' => "#{epw_file}",
45
- 'NECB-CNEB-8' => "#{epw_file}"
34
+ # For measure input
35
+ 'NECB HDD Method' => epw_file.to_s,
36
+ # For testing
37
+ 'NECB-CNEB-5' => epw_file.to_s,
38
+ 'NECB-CNEB-6' => epw_file.to_s,
39
+ 'NECB-CNEB-7a' => epw_file.to_s,
40
+ 'NECB-CNEB-7b' => epw_file.to_s,
41
+ 'NECB-CNEB-8' => epw_file.to_s
46
42
  }
47
43
 
48
- # Define where the weather files live
49
- top_dir = File.expand_path( '../../..',File.dirname(__FILE__))
50
- weather_dir = "#{top_dir}/data/weather"
51
-
52
44
  # Get the weather file name from the hash
53
- weather_file_name = climate_zone_weather_file_map[climate_zone]
45
+ weather_file_name = climate_zone_weather_file_map[climate_zone]
54
46
  if weather_file_name.nil?
55
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not determine the weather file for climate zone: #{climate_zone}.")
47
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not determine the weather file for climate zone: #{climate_zone}.")
56
48
  return false
57
49
  end
50
+
51
+ # Define where the weather files lives
52
+ weather_dir = nil
53
+ if File.dirname(__FILE__)[0] == ':'
54
+ # running embedded copy of the gem
55
+
56
+ # load weather file from embedded files
57
+ epw_string = load_resource_relative("../../../data/weather/#{weather_file_name}")
58
+ ddy_string = load_resource_relative("../../../data/weather/#{weather_file_name.gsub('.epw','.ddy')}")
59
+ stat_string = load_resource_relative("../../../data/weather/#{weather_file_name.gsub('.epw','.stat')}")
60
+
61
+ # extract to local weather dir
62
+ weather_dir = File.expand_path(File.join(Dir.pwd, "extracted_files/weather/"))
63
+ puts "Extracting weather files to #{weather_dir}"
64
+ FileUtils.mkdir_p(weather_dir)
65
+ File.open("#{weather_dir}/#{weather_file_name}", 'wb') {|f| f << epw_string ; f.flush}
66
+ File.open("#{weather_dir}/#{weather_file_name.gsub('.epw','.ddy')}", 'wb') {|f| f << ddy_string ; f.flush}
67
+ File.open("#{weather_dir}/#{weather_file_name.gsub('.epw','.stat')}", 'wb') {|f| f << stat_string ; f.flush}
68
+ else
69
+ # loaded gem from system path
70
+ top_dir = File.expand_path('../../..', File.dirname(__FILE__))
71
+ weather_dir = File.expand_path("#{top_dir}/data/weather")
72
+ end
58
73
 
59
74
  # Add Weather File
60
75
  unless (Pathname.new weather_dir).absolute?
61
76
  weather_dir = File.expand_path(File.join(File.dirname(__FILE__), weather_dir))
62
77
  end
63
-
78
+
64
79
  weather_file = File.join(weather_dir, weather_file_name)
65
80
  epw_file = OpenStudio::EpwFile.new(weather_file)
66
81
  OpenStudio::Model::WeatherFile.setWeatherFile(self, epw_file).get
@@ -71,65 +86,63 @@ class OpenStudio::Model::Model
71
86
  weather_time = epw_file.timeZone
72
87
  weather_elev = epw_file.elevation
73
88
 
74
-
75
89
  # Add or update site data
76
- site = self.getSite
90
+ site = getSite
77
91
  site.setName(weather_name)
78
92
  site.setLatitude(weather_lat)
79
93
  site.setLongitude(weather_lon)
80
94
  site.setTimeZone(weather_time)
81
95
  site.setElevation(weather_elev)
82
-
83
-
84
- #Add or update ground temperature data
85
- ground_temp_vals = self.find_object($os_standards["ground_temperatures"], {'template'=>building_vintage, 'climate_zone'=>climate_zone, 'building_type'=>building_type})
96
+
97
+ # Add or update ground temperature data
98
+ ground_temp_vals = find_object($os_standards['ground_temperatures'], 'template' => template, 'climate_zone' => climate_zone, 'building_type' => building_type)
86
99
  if ground_temp_vals && ground_temp_vals['jan']
87
- groundTemp = self.getSiteGroundTemperatureBuildingSurface
88
- groundTemp.setJanuaryGroundTemperature(ground_temp_vals['jan'])
89
- groundTemp.setFebruaryGroundTemperature(ground_temp_vals['feb'])
90
- groundTemp.setMarchGroundTemperature(ground_temp_vals['mar'])
91
- groundTemp.setAprilGroundTemperature(ground_temp_vals['apr'])
92
- groundTemp.setMayGroundTemperature(ground_temp_vals['may'])
93
- groundTemp.setJuneGroundTemperature(ground_temp_vals['jun'])
94
- groundTemp.setJulyGroundTemperature(ground_temp_vals['jul'])
95
- groundTemp.setAugustGroundTemperature(ground_temp_vals['aug'])
96
- groundTemp.setSeptemberGroundTemperature(ground_temp_vals['sep'])
97
- groundTemp.setOctoberGroundTemperature(ground_temp_vals['oct'])
98
- groundTemp.setNovemberGroundTemperature(ground_temp_vals['nov'])
99
- groundTemp.setDecemberGroundTemperature(ground_temp_vals['dec'])
100
+ ground_temp = getSiteGroundTemperatureBuildingSurface
101
+ ground_temp.setJanuaryGroundTemperature(ground_temp_vals['jan'])
102
+ ground_temp.setFebruaryGroundTemperature(ground_temp_vals['feb'])
103
+ ground_temp.setMarchGroundTemperature(ground_temp_vals['mar'])
104
+ ground_temp.setAprilGroundTemperature(ground_temp_vals['apr'])
105
+ ground_temp.setMayGroundTemperature(ground_temp_vals['may'])
106
+ ground_temp.setJuneGroundTemperature(ground_temp_vals['jun'])
107
+ ground_temp.setJulyGroundTemperature(ground_temp_vals['jul'])
108
+ ground_temp.setAugustGroundTemperature(ground_temp_vals['aug'])
109
+ ground_temp.setSeptemberGroundTemperature(ground_temp_vals['sep'])
110
+ ground_temp.setOctoberGroundTemperature(ground_temp_vals['oct'])
111
+ ground_temp.setNovemberGroundTemperature(ground_temp_vals['nov'])
112
+ ground_temp.setDecemberGroundTemperature(ground_temp_vals['dec'])
100
113
  else
101
- OpenStudio::logFree(OpenStudio::Warn, 'openstudio.weather.Model', "Could not find ground temperatures; will use generic temperatures, which will skew results.")
102
- groundTemp = self.getSiteGroundTemperatureBuildingSurface
103
- groundTemp.setJanuaryGroundTemperature(19.527)
104
- groundTemp.setFebruaryGroundTemperature(19.502)
105
- groundTemp.setMarchGroundTemperature(19.536)
106
- groundTemp.setAprilGroundTemperature(19.598)
107
- groundTemp.setMayGroundTemperature(20.002)
108
- groundTemp.setJuneGroundTemperature(21.640)
109
- groundTemp.setJulyGroundTemperature(22.225)
110
- groundTemp.setAugustGroundTemperature(22.375)
111
- groundTemp.setSeptemberGroundTemperature(21.449)
112
- groundTemp.setOctoberGroundTemperature(20.121)
113
- groundTemp.setNovemberGroundTemperature(19.802)
114
- groundTemp.setDecemberGroundTemperature(19.633)
114
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.weather.Model', 'Could not find ground temperatures; will use generic temperatures, which will skew results.')
115
+ ground_temp = getSiteGroundTemperatureBuildingSurface
116
+ ground_temp.setJanuaryGroundTemperature(19.527)
117
+ ground_temp.setFebruaryGroundTemperature(19.502)
118
+ ground_temp.setMarchGroundTemperature(19.536)
119
+ ground_temp.setAprilGroundTemperature(19.598)
120
+ ground_temp.setMayGroundTemperature(20.002)
121
+ ground_temp.setJuneGroundTemperature(21.640)
122
+ ground_temp.setJulyGroundTemperature(22.225)
123
+ ground_temp.setAugustGroundTemperature(22.375)
124
+ ground_temp.setSeptemberGroundTemperature(21.449)
125
+ ground_temp.setOctoberGroundTemperature(20.121)
126
+ ground_temp.setNovemberGroundTemperature(19.802)
127
+ ground_temp.setDecemberGroundTemperature(19.633)
115
128
  end
116
129
 
117
130
  # Add SiteWaterMainsTemperature -- via parsing of STAT file.
118
131
  stat_filename = "#{File.join(File.dirname(weather_file), File.basename(weather_file, '.*'))}.stat"
119
132
  if File.exist? stat_filename
120
133
  stat_file = EnergyPlus::StatFile.new(stat_filename)
121
- water_temp = self.getSiteWaterMainsTemperature
134
+ water_temp = getSiteWaterMainsTemperature
122
135
  water_temp.setAnnualAverageOutdoorAirTemperature(stat_file.mean_dry_bulb)
123
136
  water_temp.setMaximumDifferenceInMonthlyAverageOutdoorAirTemperatures(stat_file.delta_dry_bulb)
124
- #OpenStudio::logFree(OpenStudio::Info, "openstudio.weather.Model", "Mean dry bulb is #{stat_file.mean_dry_bulb}")
125
- #OpenStudio::logFree(OpenStudio::Info, "openstudio.weather.Model", "Delta dry bulb is #{stat_file.delta_dry_bulb}")
137
+ # OpenStudio::logFree(OpenStudio::Info, "openstudio.weather.Model", "Mean dry bulb is #{stat_file.mean_dry_bulb}")
138
+ # OpenStudio::logFree(OpenStudio::Info, "openstudio.weather.Model", "Delta dry bulb is #{stat_file.delta_dry_bulb}")
126
139
  else
127
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not find .stat file for: #{stat_filename}.")
140
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not find .stat file for: #{stat_filename}.")
128
141
  return false
129
142
  end
130
143
 
131
144
  # Remove any existing Design Day objects that are in the file
132
- self.getDesignDays.each { |d| d.remove }
145
+ getDesignDays.each(&:remove)
133
146
 
134
147
  # Load in the ddy file based on convention that it is in
135
148
  # the same directory and has the same basename as the epw file.
@@ -139,26 +152,20 @@ class OpenStudio::Model::Model
139
152
  ddy_model.getObjectsByType('OS:SizingPeriod:DesignDay'.to_IddObjectType).each do |d|
140
153
  # Import the 99.6% Heating and 0.4% Cooling design days
141
154
  ddy_list = /(Htg 99.6. Condns DB)|(Clg .4% Condns DB=>MWB)/
142
- if d.name.get =~ ddy_list
143
- self.addObject(d.clone)
144
- #OpenStudio::logFree(OpenStudio::Info, 'openstudio.weather.Model', "Added #{d.name} design day.")
155
+ if d.name.get =~ ddy_list
156
+ addObject(d.clone)
157
+ # OpenStudio::logFree(OpenStudio::Info, 'openstudio.weather.Model', "Added #{d.name} design day.")
145
158
  end
146
159
  end
147
160
  else
148
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not find .stat file for: #{stat_filename}.")
149
- puts "Could not find .stat file for: #{stat_filename}."
161
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not find .ddy file for: #{ddy_file}.")
162
+ puts "Could not find .ddy file for: #{ddy_file}."
150
163
  return false
151
164
  end
152
165
 
153
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.weather.Model', "Finished adding weather file for climate zone: #{climate_zone}.")
154
- puts "Could not find .stat file for: #{stat_filename}."
155
-
156
166
  return true
157
-
158
167
  end
159
-
160
- end
161
-
168
+ end
162
169
 
163
170
  # *********************************************************************
164
171
  # * Copyright (c) 2008-2015, Natural Resources Canada
@@ -179,257 +186,252 @@ end
179
186
  # * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
180
187
  # **********************************************************************/
181
188
 
182
-
183
- #This module has been created to make it easier to manipulate weather files can contains region specific data.
184
-
189
+ # This module has been created to make it easier to manipulate weather files can contains region specific data.
185
190
 
186
191
  module BTAP
187
192
  module Environment
188
193
  require_relative 'Weather.stat_file'
189
-
190
- #keeping data is hash/json for now. Can always export / import to csv if required automatically.
191
- WeatherData1 = [
192
- {:file=>"CAN_BC_Abbotsford.711080_CWEC.epw", :location_name=>" CAN-BC-Abbotsford", :energy_plus_location_name=>"Abbotsford_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Abbotsford", :hdd18=>3134, :cdd18=>33, :latitude=>49.03, :longitude=>-122.37, :elevation=>58, :deltadb=>14.3, :a90_1_2004_climate_zone=>"5C", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
193
- {:file=>"CAN_PQ_Bagotville.717270_CWEC.epw", :location_name=>" CAN-PQ-Bagotville", :energy_plus_location_name=>"Bagotville_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Bagotville", :hdd18=>5781, :cdd18=>49, :latitude=>48.33, :longitude=>-71, :elevation=>159, :deltadb=>32.4, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
194
- {:file=>"CAN_PQ_Baie.Comeau.711870_CWEC.epw", :location_name=>" CAN-PQ-Baie Comeau", :energy_plus_location_name=>"Baie Comeau_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Baie Comeau", :hdd18=>5889, :cdd18=>3, :latitude=>49.13, :longitude=>-68.2, :elevation=>22, :deltadb=>29.8, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
195
- {:file=>"CAN_NF_Battle.Harbour.718170_CWEC.epw", :location_name=>" CAN-NF-Battle Harbour", :energy_plus_location_name=>"Battle Harbour_NF_CAN", :country=>"CAN", :state_province_region=>"NF", :city=>"Battle Harbour", :hdd18=>6462, :cdd18=>0, :latitude=>52.3, :longitude=>-55.83, :elevation=>8, :deltadb=>21.6, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
196
- {:file=>"CAN_MB_Brandon.711400_CWEC.epw", :location_name=>" CAN-MB-Brandon", :energy_plus_location_name=>"Brandon_MB_CAN", :country=>"CAN", :state_province_region=>"MB", :city=>"Brandon", :hdd18=>5912, :cdd18=>95, :latitude=>49.92, :longitude=>-99.95, :elevation=>409, :deltadb=>36.7, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
197
- {:file=>"CAN_AB_Calgary.718770_CWEC.epw", :location_name=>" CAN-AB-Calgary Int'l", :energy_plus_location_name=>"Calgary Int'l_AB_CAN", :country=>"CAN", :state_province_region=>"AB", :city=>"Calgary Int'l", :hdd18=>5146, :cdd18=>40, :latitude=>51.12, :longitude=>-114.02, :elevation=>1084, :deltadb=>25, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
198
- {:file=>"CAN_PE_Charlottetown.717060_CWEC.epw", :location_name=>" CAN-PE-Charlottetown CDA", :energy_plus_location_name=>"Charlottetown CDA_PE_CAN", :country=>"CAN", :state_province_region=>"PE", :city=>"Charlottetown CDA", :hdd18=>4647, :cdd18=>72, :latitude=>46.28, :longitude=>-63.13, :elevation=>54, :deltadb=>25.6, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
199
- {:file=>"CAN_MB_Churchill.719130_CWEC.epw", :location_name=>" CAN-MB-Churchill", :energy_plus_location_name=>"Churchill_MB_CAN", :country=>"CAN", :state_province_region=>"MB", :city=>"Churchill", :hdd18=>9114, :cdd18=>3, :latitude=>58.75, :longitude=>-94.07, :elevation=>29, :deltadb=>37.7, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
200
- {:file=>"CAN_BC_Comox.718930_CWEC.epw", :location_name=>" CAN-BC-Comox", :energy_plus_location_name=>"Comox_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Comox", :hdd18=>3177, :cdd18=>30, :latitude=>49.72, :longitude=>-124.9, :elevation=>24, :deltadb=>15.2, :a90_1_2004_climate_zone=>"5C", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
201
- {:file=>"CAN_BC_Cranbrook.718800_CWEC.epw", :location_name=>" CAN-BC-Cranbrook", :energy_plus_location_name=>"Cranbrook_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Cranbrook", :hdd18=>4645, :cdd18=>118, :latitude=>49.6, :longitude=>-115.78, :elevation=>940, :deltadb=>26.6, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
202
- {:file=>"CAN_AB_Edmonton.711230_CWEC.epw", :location_name=>" CAN-AB-Edmonton Stony Plain", :energy_plus_location_name=>"Edmonton Stony Plain_AB_CAN", :country=>"CAN", :state_province_region=>"AB", :city=>"Edmonton Stony Plain", :hdd18=>5583, :cdd18=>22, :latitude=>53.53, :longitude=>-114.1, :elevation=>723, :deltadb=>27.5, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
203
- {:file=>"CAN_SK_Estevan.718620_CWEC.epw", :location_name=>" CAN-SK-Estevan", :energy_plus_location_name=>"Estevan_SK_CAN", :country=>"CAN", :state_province_region=>"SK", :city=>"Estevan", :hdd18=>5370, :cdd18=>189, :latitude=>49.22, :longitude=>-102.97, :elevation=>581, :deltadb=>35.1, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
204
- {:file=>"CAN_AB_Fort.McMurray.719320_CWEC.epw", :location_name=>" CAN-AB-Fort McMurray", :energy_plus_location_name=>"Fort McMurray_AB_CAN", :country=>"CAN", :state_province_region=>"AB", :city=>"Fort McMurray", :hdd18=>6191, :cdd18=>65, :latitude=>56.65, :longitude=>-111.22, :elevation=>369, :deltadb=>33.5, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
205
- {:file=>"CAN_BC_Fort.St.John.719430_CWEC.epw", :location_name=>" CAN-BC-Fort St John", :energy_plus_location_name=>"Fort St John_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Fort St John", :hdd18=>5863, :cdd18=>25, :latitude=>56.23, :longitude=>-120.73, :elevation=>695, :deltadb=>29.1, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
206
- {:file=>"CAN_NB_Fredericton.717000_CWEC.epw", :location_name=>" CAN-NB-Fredericton", :energy_plus_location_name=>"Fredericton_NB_CAN", :country=>"CAN", :state_province_region=>"NB", :city=>"Fredericton", :hdd18=>4734, :cdd18=>132, :latitude=>45.87, :longitude=>-66.53, :elevation=>20, :deltadb=>29.5, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
207
- {:file=>"CAN_NF_Gander.718030_CWEC.epw", :location_name=>" CAN-NF-Gander Int'l", :energy_plus_location_name=>"Gander Int'l_NF_CAN", :country=>"CAN", :state_province_region=>"NF", :city=>"Gander Int'l", :hdd18=>5101, :cdd18=>25, :latitude=>48.95, :longitude=>-54.57, :elevation=>151, :deltadb=>22.6, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
208
- {:file=>"CAN_NF_Goose.718160_CWEC.epw", :location_name=>" CAN-NF-Goose", :energy_plus_location_name=>"Goose_NF_CAN", :country=>"CAN", :state_province_region=>"NF", :city=>"Goose", :hdd18=>6558, :cdd18=>38, :latitude=>53.32, :longitude=>-60.37, :elevation=>49, :deltadb=>33, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
209
- {:file=>"CAN_AB_Grande.Prairie.719400_CWEC.epw", :location_name=>" CAN-AB-Grand Prairie", :energy_plus_location_name=>"Grand Prairie_AB_CAN", :country=>"CAN", :state_province_region=>"AB", :city=>"Grand Prairie", :hdd18=>5897, :cdd18=>26, :latitude=>55.18, :longitude=>-118.88, :elevation=>669, :deltadb=>28.9, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
210
- {:file=>"CAN_NS_Greenwood.713970_CWEC.epw", :location_name=>" CAN-NS-Greenwood", :energy_plus_location_name=>"Greenwood_NS_CAN", :country=>"CAN", :state_province_region=>"NS", :city=>"Greenwood", :hdd18=>4131, :cdd18=>128, :latitude=>44.98, :longitude=>-64.92, :elevation=>28, :deltadb=>23.8, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
211
- {:file=>"CAN_PQ_Grindstone.Island_CWEC.epw", :location_name=>" CAN-PQ-Grindstone Island", :energy_plus_location_name=>"Grindstone Island_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Grindstone Island", :hdd18=>4941, :cdd18=>18, :latitude=>47.38, :longitude=>-61.87, :elevation=>59, :deltadb=>23.8, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
212
- {:file=>"CAN_NT_Inuvik.719570_CWEC.epw", :location_name=>" CAN-NT-Inuvik Ua", :energy_plus_location_name=>"Inuvik Ua_NT_CAN", :country=>"CAN", :state_province_region=>"NT", :city=>"Inuvik Ua", :hdd18=>9952, :cdd18=>17, :latitude=>68.3, :longitude=>-133.48, :elevation=>68, :deltadb=>40.6, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"FuelOil#1", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
213
- {:file=>"CAN_BC_Kamloops.718870_CWEC.epw", :location_name=>" CAN-BC-Kamloops", :energy_plus_location_name=>"Kamloops_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Kamloops", :hdd18=>3629, :cdd18=>287, :latitude=>50.7, :longitude=>-120.45, :elevation=>346, :deltadb=>25.6, :a90_1_2004_climate_zone=>"5B", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
214
- {:file=>"CAN_ON_Kingston.716200_CWEC.epw", :location_name=>" CAN-ON-Kingston", :energy_plus_location_name=>"Kingston_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Kingston", :hdd18=>4287, :cdd18=>187, :latitude=>44.22, :longitude=>-76.6, :elevation=>93, :deltadb=>27.7, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
215
- {:file=>"CAN_PQ_Kuujjuarapik.719050_CWEC.epw", :location_name=>" CAN-PQ-Kuujjuarapik", :energy_plus_location_name=>"Kuujjuarapik_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Kuujjuarapik", :hdd18=>7986, :cdd18=>12, :latitude=>55.28, :longitude=>-77.77, :elevation=>12, :deltadb=>32, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
216
- {:file=>"CAN_PQ_Kuujuaq.719060_CWEC.epw", :location_name=>" CAN-PQ-Kuujuaq", :energy_plus_location_name=>"Kuujuaq_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Kuujuaq", :hdd18=>8491, :cdd18=>0, :latitude=>58.1, :longitude=>-68.42, :elevation=>37, :deltadb=>31.8, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
217
- {:file=>"CAN_PQ_La.Grande.Riviere.718270_CWEC.epw", :location_name=>" CAN-PQ-La Grande Riviere", :energy_plus_location_name=>"La Grande Riviere_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"La Grande Riviere", :hdd18=>7616, :cdd18=>11, :latitude=>53.63, :longitude=>-77.7, :elevation=>195, :deltadb=>35.2, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
218
- {:file=>"CAN_PQ_Lake.Eon.714210_CWEC.epw", :location_name=>" CAN-PQ-Lake Eon", :energy_plus_location_name=>"Lake Eon_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Lake Eon", :hdd18=>7383, :cdd18=>8, :latitude=>51.87, :longitude=>-63.28, :elevation=>561, :deltadb=>33.9, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
219
- {:file=>"CAN_AB_Lethbridge.712430_CWEC.epw", :location_name=>" CAN-AB-Lethbridge", :energy_plus_location_name=>"Lethbridge_AB_CAN", :country=>"CAN", :state_province_region=>"AB", :city=>"Lethbridge", :hdd18=>4432, :cdd18=>126, :latitude=>49.63, :longitude=>-112.8, :elevation=>921, :deltadb=>26.5, :a90_1_2004_climate_zone=>"6B", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
220
- {:file=>"CAN_ON_London.716230_CWEC.epw", :location_name=>" CAN-ON-London", :energy_plus_location_name=>"London_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"London", :hdd18=>4111, :cdd18=>211, :latitude=>43.03, :longitude=>-81.15, :elevation=>278, :deltadb=>27.9, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
221
- {:file=>"CAN_AB_Medicine.Hat.718720_CWEC.epw", :location_name=>" CAN-AB-Medicine Hat", :energy_plus_location_name=>"Medicine Hat_AB_CAN", :country=>"CAN", :state_province_region=>"AB", :city=>"Medicine Hat", :hdd18=>4678, :cdd18=>199, :latitude=>50.02, :longitude=>-110.72, :elevation=>716, :deltadb=>31.6, :a90_1_2004_climate_zone=>"6B", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
222
- {:file=>"CAN_NB_Miramichi.717440_CWEC.epw", :location_name=>" CAN-NB-Miramichi", :energy_plus_location_name=>"Miramichi_NB_CAN", :country=>"CAN", :state_province_region=>"NB", :city=>"Miramichi", :hdd18=>4921, :cdd18=>141, :latitude=>47.02, :longitude=>-65.45, :elevation=>33, :deltadb=>29.6, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
223
- {:file=>"CAN_PQ_Mont.Joli.717180_CWEC.epw", :location_name=>" CAN-PQ-Mont Joli", :energy_plus_location_name=>"Mont Joli_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Mont Joli", :hdd18=>5522, :cdd18=>65, :latitude=>48.6, :longitude=>-68.22, :elevation=>52, :deltadb=>30.8, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
224
- {:file=>"CAN_PQ_Montreal.Intl.AP.716270_CWEC.epw", :location_name=>" CAN-PQ-Montreal Int'l", :energy_plus_location_name=>"Montreal Int'l_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Montreal Int'l", :hdd18=>4493, :cdd18=>234, :latitude=>45.47, :longitude=>-73.75, :elevation=>36, :deltadb=>30.2, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
225
- {:file=>"CAN_PQ_Montreal.Jean.Brebeuf.716278_CWEC.epw", :location_name=>" CAN-PQ-Montreal Jean Brebeuf", :energy_plus_location_name=>"Montreal Jean Brebeuf_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Montreal Jean Brebeuf", :hdd18=>4616, :cdd18=>209, :latitude=>45.5, :longitude=>-73.62, :elevation=>133, :deltadb=>31.2, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
226
- {:file=>"CAN_PQ_Montreal.Mirabel.716278_CWEC.epw", :location_name=>" CAN-PQ-Montreal Mirabel", :energy_plus_location_name=>"Montreal Mirabel_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Montreal Mirabel", :hdd18=>4861, :cdd18=>102, :latitude=>45.68, :longitude=>-74.03, :elevation=>82, :deltadb=>33.4, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
227
- {:file=>"CAN_ON_Mount.Forest.716310_CWEC.epw", :location_name=>" CAN-ON-Mount Forest", :energy_plus_location_name=>"Mount Forest_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Mount Forest", :hdd18=>4578, :cdd18=>121, :latitude=>43.98, :longitude=>-80.75, :elevation=>415, :deltadb=>27.7, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
228
- {:file=>"CAN_ON_Muskoka.716300_CWEC.epw", :location_name=>" CAN-ON-Muskoka", :energy_plus_location_name=>"Muskoka_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Muskoka", :hdd18=>4774, :cdd18=>97, :latitude=>44.97, :longitude=>-79.3, :elevation=>282, :deltadb=>29.3, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
229
- {:file=>"CAN_PQ_Nitchequon.CAN270_CWEC.epw", :location_name=>" CAN-PQ-Nitchequon", :energy_plus_location_name=>"Nitchequon_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Nitchequon", :hdd18=>7922, :cdd18=>6, :latitude=>53.2, :longitude=>-70.9, :elevation=>536, :deltadb=>35.8, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
230
- {:file=>"CAN_SK_North.Battleford.718760_CWEC.epw", :location_name=>" CAN-SK-North Battleford", :energy_plus_location_name=>"North Battleford_SK_CAN", :country=>"CAN", :state_province_region=>"SK", :city=>"North Battleford", :hdd18=>5962, :cdd18=>75, :latitude=>52.77, :longitude=>-108.25, :elevation=>548, :deltadb=>35.4, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
231
- {:file=>"CAN_ON_North.Bay.717310_CWEC.epw", :location_name=>" CAN-ON-North Bay", :energy_plus_location_name=>"North Bay_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"North Bay", :hdd18=>5341, :cdd18=>103, :latitude=>46.35, :longitude=>-79.43, :elevation=>371, :deltadb=>32.2, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
232
- {:file=>"CAN_ON_Ottawa.716280_CWEC.epw", :location_name=>" CAN-ON-Ottawa Int'l", :energy_plus_location_name=>"Ottawa Int'l_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Ottawa Int'l", :hdd18=>4664, :cdd18=>189, :latitude=>45.32, :longitude=>-75.67, :elevation=>114, :deltadb=>31.8, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
233
- {:file=>"CAN_BC_Port.Hardy.711090_CWEC.epw", :location_name=>" CAN-BC-Port Hardy", :energy_plus_location_name=>"Port Hardy_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Port Hardy", :hdd18=>3712, :cdd18=>0, :latitude=>50.68, :longitude=>-127.37, :elevation=>22, :deltadb=>10.8, :a90_1_2004_climate_zone=>"5C", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
234
- {:file=>"CAN_BC_Prince.George.718960_CWEC.epw", :location_name=>" CAN-BC-Prince George", :energy_plus_location_name=>"Prince George_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Prince George", :hdd18=>5070, :cdd18=>15, :latitude=>53.88, :longitude=>-122.68, :elevation=>691, :deltadb=>26, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
235
- {:file=>"CAN_BC_Prince.Rupert.718980_CWEC.epw", :location_name=>" CAN-BC-Prince Rupert", :energy_plus_location_name=>"Prince Rupert_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Prince Rupert", :hdd18=>4151, :cdd18=>0, :latitude=>54.3, :longitude=>-130.43, :elevation=>34, :deltadb=>13.5, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
236
- {:file=>"CAN_PQ_Quebec.717140_CWEC.epw", :location_name=>" CAN-PQ-Quebec City", :energy_plus_location_name=>"Quebec City_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Quebec City", :hdd18=>4964, :cdd18=>111, :latitude=>46.8, :longitude=>-71.38, :elevation=>73, :deltadb=>31, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
237
- {:file=>"CAN_SK_Regina.718630_CWEC.epw", :location_name=>" CAN-SK-Regina", :energy_plus_location_name=>"Regina_SK_CAN", :country=>"CAN", :state_province_region=>"SK", :city=>"Regina", :hdd18=>5646, :cdd18=>129, :latitude=>50.43, :longitude=>-104.67, :elevation=>577, :deltadb=>35.4, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
238
- {:file=>"CAN_NU_Resolute.719240_CWEC.epw", :location_name=>" CAN-NU-Resolute", :energy_plus_location_name=>"Resolute_NU_CAN", :country=>"CAN", :state_province_region=>"NU", :city=>"Resolute", :hdd18=>12570, :cdd18=>0, :latitude=>74.72, :longitude=>-94.98, :elevation=>67, :deltadb=>35.9, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"FuelOil#2", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
239
- {:file=>"CAN_PQ_Riviere.du.Loup.717150_CWEC.epw", :location_name=>" CAN-PQ-Riviere Du Loup", :energy_plus_location_name=>"Riviere Du Loup_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Riviere Du Loup", :hdd18=>5424, :cdd18=>82, :latitude=>47.8, :longitude=>-69.55, :elevation=>148, :deltadb=>30.1, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
240
- {:file=>"CAN_PQ_Roberval.717280_CWEC.epw", :location_name=>" CAN-PQ-Roberval", :energy_plus_location_name=>"Roberval_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Roberval", :hdd18=>5757, :cdd18=>97, :latitude=>48.52, :longitude=>-72.27, :elevation=>179, :deltadb=>35.6, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
241
- {:file=>"CAN_NS_Sable.Island.716000_CWEC.epw", :location_name=>" CAN-NS-Sable Island", :energy_plus_location_name=>"Sable Island_NS_CAN", :country=>"CAN", :state_province_region=>"NS", :city=>"Sable Island", :hdd18=>3860, :cdd18=>14, :latitude=>43.93, :longitude=>-60.02, :elevation=>4, :deltadb=>18.3, :a90_1_2004_climate_zone=>"5A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
242
- {:file=>"CAN_NB_Saint.John.716090_CWEC.epw", :location_name=>" CAN-NB-Saint John", :energy_plus_location_name=>"Saint John_NB_CAN", :country=>"CAN", :state_province_region=>"NB", :city=>"Saint John", :hdd18=>4695, :cdd18=>12, :latitude=>45.32, :longitude=>-65.88, :elevation=>109, :deltadb=>23.8, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
243
- {:file=>"CAN_BC_Sandspit.711010_CWEC.epw", :location_name=>" CAN-BC-Sandspit", :energy_plus_location_name=>"Sandspit_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Sandspit", :hdd18=>3644, :cdd18=>0, :latitude=>53.25, :longitude=>-131.82, :elevation=>6, :deltadb=>13.1, :a90_1_2004_climate_zone=>"5C", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
244
- {:file=>"CAN_SK_Saskatoon.718660_CWEC.epw", :location_name=>" CAN-SK-Saskatoon", :energy_plus_location_name=>"Saskatoon_SK_CAN", :country=>"CAN", :state_province_region=>"SK", :city=>"Saskatoon", :hdd18=>5812, :cdd18=>84, :latitude=>52.17, :longitude=>-106.68, :elevation=>504, :deltadb=>34.4, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
245
- {:file=>"CAN_ON_Sault.Ste.Marie.712600_CWEC.epw", :location_name=>" CAN-ON-Sault Ste Marie", :energy_plus_location_name=>"Sault Ste Marie_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Sault Ste Marie", :hdd18=>4993, :cdd18=>75, :latitude=>46.48, :longitude=>-84.52, :elevation=>192, :deltadb=>28.3, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
246
- {:file=>"CAN_PQ_Schefferville.718280_CWEC.epw", :location_name=>" CAN-PQ-Schefferville", :energy_plus_location_name=>"Schefferville_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Schefferville", :hdd18=>8057, :cdd18=>7, :latitude=>54.8, :longitude=>-66.82, :elevation=>521, :deltadb=>34.6, :a90_1_2004_climate_zone=>8, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
247
- {:file=>"CAN_PQ_Sept-Iles.718110_CWEC.epw", :location_name=>" CAN-PQ-Sept-Iles", :energy_plus_location_name=>"Sept-Iles_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Sept-Iles", :hdd18=>6134, :cdd18=>4, :latitude=>50.22, :longitude=>-66.27, :elevation=>55, :deltadb=>30.9, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
248
- {:file=>"CAN_NS_Shearwater.716010_CWEC.epw", :location_name=>" CAN-NS-Shearwater", :energy_plus_location_name=>"Shearwater_NS_CAN", :country=>"CAN", :state_province_region=>"NS", :city=>"Shearwater", :hdd18=>4197, :cdd18=>58, :latitude=>44.63, :longitude=>-63.5, :elevation=>51, :deltadb=>22, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
249
- {:file=>"CAN_PQ_Sherbrooke.716100_CWEC.epw", :location_name=>" CAN-PQ-Sherbrooke", :energy_plus_location_name=>"Sherbrooke_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Sherbrooke", :hdd18=>5068, :cdd18=>93, :latitude=>45.43, :longitude=>-71.68, :elevation=>241, :deltadb=>28.2, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
250
- {:file=>"CAN_ON_Simcoe.715270_CWEC.epw", :location_name=>" CAN-ON-Simcoe", :energy_plus_location_name=>"Simcoe_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Simcoe", :hdd18=>4066, :cdd18=>190, :latitude=>42.85, :longitude=>-80.27, :elevation=>241, :deltadb=>26.4, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
251
- {:file=>"CAN_BC_Smithers.719500_CWEC.epw", :location_name=>" CAN-BC-Smithers", :energy_plus_location_name=>"Smithers_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Smithers", :hdd18=>5265, :cdd18=>22, :latitude=>54.82, :longitude=>-127.18, :elevation=>523, :deltadb=>24.2, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
252
- {:file=>"CAN_PQ_St.Hubert.713710_CWEC.epw", :location_name=>" CAN-PQ-St Hubert", :energy_plus_location_name=>"St Hubert_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"St Hubert", :hdd18=>4566, :cdd18=>251, :latitude=>45.52, :longitude=>-73.42, :elevation=>27, :deltadb=>31.2, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
253
- {:file=>"CAN_NF_St.Johns.718010_CWEC.epw", :location_name=>" CAN-NF-St John's", :energy_plus_location_name=>"St John's_NF_CAN", :country=>"CAN", :state_province_region=>"NF", :city=>"St John's", :hdd18=>4886, :cdd18=>24, :latitude=>47.62, :longitude=>-52.73, :elevation=>140, :deltadb=>20.5, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
254
- {:file=>"CAN_PQ_Ste.Agathe.des.Monts.717200_CWEC.epw", :location_name=>" CAN-PQ-Ste Agathe Des Monts", :energy_plus_location_name=>"Ste Agathe Des Monts_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Ste Agathe Des Monts", :hdd18=>5350, :cdd18=>45, :latitude=>46.05, :longitude=>-74.28, :elevation=>395, :deltadb=>29.6, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
255
- {:file=>"CAN_NF_Stephenville.718150_CWEC.epw", :location_name=>" CAN-NF-Stephenville", :energy_plus_location_name=>"Stephenville_NF_CAN", :country=>"CAN", :state_province_region=>"NF", :city=>"Stephenville", :hdd18=>4724, :cdd18=>10, :latitude=>48.53, :longitude=>-58.55, :elevation=>26, :deltadb=>23.1, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
256
- {:file=>"CAN_BC_Summerland.717680_CWEC.epw", :location_name=>" CAN-BC-Summerland", :energy_plus_location_name=>"Summerland_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Summerland", :hdd18=>3388, :cdd18=>199, :latitude=>49.57, :longitude=>-119.65, :elevation=>479, :deltadb=>21.8, :a90_1_2004_climate_zone=>"5A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
257
- {:file=>"CAN_SK_Swift.Current.718700_CWEC.epw", :location_name=>" CAN-SK-Swift Current", :energy_plus_location_name=>"Swift Current_SK_CAN", :country=>"CAN", :state_province_region=>"SK", :city=>"Swift Current", :hdd18=>5227, :cdd18=>96, :latitude=>50.28, :longitude=>-107.68, :elevation=>818, :deltadb=>30.8, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
258
- {:file=>"CAN_NS_Sydney.717070_CWEC.epw", :location_name=>" CAN-NS-Sydney", :energy_plus_location_name=>"Sydney_NS_CAN", :country=>"CAN", :state_province_region=>"NS", :city=>"Sydney", :hdd18=>4634, :cdd18=>51, :latitude=>46.17, :longitude=>-60.05, :elevation=>62, :deltadb=>24, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
259
- {:file=>"CAN_MB_The.Pas.718670_CWEC.epw", :location_name=>" CAN-MB-The Pas", :energy_plus_location_name=>"The Pas_MB_CAN", :country=>"CAN", :state_province_region=>"MB", :city=>"The Pas", :hdd18=>6442, :cdd18=>106, :latitude=>53.97, :longitude=>-101.1, :elevation=>271, :deltadb=>37.9, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
260
- {:file=>"CAN_ON_Thunder.Bay.717490_CWEC.epw", :location_name=>" CAN-ON-Thunder Bay", :energy_plus_location_name=>"Thunder Bay_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Thunder Bay", :hdd18=>5624, :cdd18=>60, :latitude=>48.37, :longitude=>-89.32, :elevation=>199, :deltadb=>33.8, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
261
- {:file=>"CAN_ON_Timmins.717390_CWEC.epw", :location_name=>" CAN-ON-Timmins", :energy_plus_location_name=>"Timmins_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Timmins", :hdd18=>5952, :cdd18=>63, :latitude=>48.57, :longitude=>-81.37, :elevation=>295, :deltadb=>33.8, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
262
- {:file=>"CAN_ON_Toronto.716240_CWEC.epw", :location_name=>" CAN-ON-Toronto Int'l", :energy_plus_location_name=>"Toronto Int'l_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Toronto Int'l", :hdd18=>4088, :cdd18=>231, :latitude=>43.67, :longitude=>-79.63, :elevation=>173, :deltadb=>26.6, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
263
- {:file=>"CAN_ON_Trenton.716210_CWEC.epw", :location_name=>" CAN-ON-Trenton", :energy_plus_location_name=>"Trenton_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Trenton", :hdd18=>4176, :cdd18=>207, :latitude=>44.12, :longitude=>-77.53, :elevation=>86, :deltadb=>27.7, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
264
- {:file=>"CAN_NS_Truro.713980_CWEC.epw", :location_name=>" CAN-NS-Truro", :energy_plus_location_name=>"Truro_NS_CAN", :country=>"CAN", :state_province_region=>"NS", :city=>"Truro", :hdd18=>4537, :cdd18=>35, :latitude=>45.37, :longitude=>-63.27, :elevation=>40, :deltadb=>25.2, :a90_1_2004_climate_zone=>"6A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
265
- {:file=>"CAN_PQ_Val.d.Or.717250_CWEC.epw", :location_name=>" CAN-PQ-Val d'Or", :energy_plus_location_name=>"Val d'Or_PQ_CAN", :country=>"CAN", :state_province_region=>"PQ", :city=>"Val d'Or", :hdd18=>6129, :cdd18=>79, :latitude=>48.07, :longitude=>-77.78, :elevation=>337, :deltadb=>35, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
266
- {:file=>"CAN_BC_Vancouver.718920_CWEC.epw", :location_name=>" CAN-BC-Vancouver Int'l", :energy_plus_location_name=>"Vancouver Int'l_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Vancouver Int'l", :hdd18=>3019, :cdd18=>4, :latitude=>49.18, :longitude=>-123.17, :elevation=>2, :deltadb=>13.9, :a90_1_2004_climate_zone=>"5C", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
267
- {:file=>"CAN_BC_Victoria.717990_CWEC.epw", :location_name=>" CAN-BC-Victoria Int'l", :energy_plus_location_name=>"Victoria Int'l_BC_CAN", :country=>"CAN", :state_province_region=>"BC", :city=>"Victoria Int'l", :hdd18=>3075, :cdd18=>8, :latitude=>48.65, :longitude=>-123.43, :elevation=>19, :deltadb=>12.3, :a90_1_2004_climate_zone=>"5C", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
268
- {:file=>"CAN_YT_Whitehorse.719640_CWEC.epw", :location_name=>" CAN-YT-Whitehorse", :energy_plus_location_name=>"Whitehorse_YT_CAN", :country=>"CAN", :state_province_region=>"YT", :city=>"Whitehorse", :hdd18=>6946, :cdd18=>2, :latitude=>60.72, :longitude=>-135.07, :elevation=>703, :deltadb=>34.5, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"FuelOil#1", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"},
269
- {:file=>"CAN_ON_Windsor.715380_CWEC.epw", :location_name=>" CAN-ON-Windsor", :energy_plus_location_name=>"Windsor_ON_CAN", :country=>"CAN", :state_province_region=>"ON", :city=>"Windsor", :hdd18=>3570, :cdd18=>367, :latitude=>42.27, :longitude=>-82.97, :elevation=>190, :deltadb=>27.1, :a90_1_2004_climate_zone=>"5A", :boiler_fueltype=>"NaturalGas", :baseboard_type=>"Hot Water", :mau_type=>true, :mau_heating_coil_type=>"Hot Water", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Gas", :heating_coil_type_sys4=>"Gas", :heating_coil_type_sys6=>"Hot Water", :fan_type=>"var_speed_drive"},
270
- {:file=>"CAN_MB_Winnipeg.718520_CWEC.epw", :location_name=>" CAN-MB-Winnipeg Int'l", :energy_plus_location_name=>"Winnipeg Int'l_MB_CAN", :country=>"CAN", :state_province_region=>"MB", :city=>"Winnipeg Int'l", :hdd18=>5754, :cdd18=>197, :latitude=>49.9, :longitude=>-97.23, :elevation=>239, :deltadb=>37.8, :a90_1_2004_climate_zone=>7, :boiler_fueltype=>"Electricity", :baseboard_type=>"Electric", :mau_type=>true, :mau_heating_coil_type=>"Electric", :mau_cooling_type=>"DX", :chiller_type=>"Scroll", :heating_coil_type_sys_3=>"Electric", :heating_coil_type_sys4=>"Electric", :heating_coil_type_sys6=>"Electric", :fan_type=>"var_speed_drive"}
271
- ]
272
-
273
-
274
- #this method is used to populate user interfaces if needed from the hash above.
275
- def self.get_canadian_weather_file_names()
194
+
195
+ # keeping data is hash/json for now. Can always export / import to csv if required automatically.
196
+ WeatherData1 = [
197
+ { file: 'CAN_BC_Abbotsford.711080_CWEC.epw', location_name: ' CAN-BC-Abbotsford', energy_plus_location_name: 'Abbotsford_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Abbotsford', hdd18: 3134, cdd18: 33, latitude: 49.03, longitude: -122.37, elevation: 58, deltadb: 14.3, a90_1_2004_climate_zone: '5C', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
198
+ { file: 'CAN_PQ_Bagotville.717270_CWEC.epw', location_name: ' CAN-PQ-Bagotville', energy_plus_location_name: 'Bagotville_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Bagotville', hdd18: 5781, cdd18: 49, latitude: 48.33, longitude: -71, elevation: 159, deltadb: 32.4, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
199
+ { file: 'CAN_PQ_Baie.Comeau.711870_CWEC.epw', location_name: ' CAN-PQ-Baie Comeau', energy_plus_location_name: 'Baie Comeau_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Baie Comeau', hdd18: 5889, cdd18: 3, latitude: 49.13, longitude: -68.2, elevation: 22, deltadb: 29.8, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
200
+ { file: 'CAN_NF_Battle.Harbour.718170_CWEC.epw', location_name: ' CAN-NF-Battle Harbour', energy_plus_location_name: 'Battle Harbour_NF_CAN', country: 'CAN', state_province_region: 'NF', city: 'Battle Harbour', hdd18: 6462, cdd18: 0, latitude: 52.3, longitude: -55.83, elevation: 8, deltadb: 21.6, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
201
+ { file: 'CAN_MB_Brandon.711400_CWEC.epw', location_name: ' CAN-MB-Brandon', energy_plus_location_name: 'Brandon_MB_CAN', country: 'CAN', state_province_region: 'MB', city: 'Brandon', hdd18: 5912, cdd18: 95, latitude: 49.92, longitude: -99.95, elevation: 409, deltadb: 36.7, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
202
+ { file: 'CAN_AB_Calgary.718770_CWEC.epw', location_name: " CAN-AB-Calgary Int'l", energy_plus_location_name: "Calgary Int'l_AB_CAN", country: 'CAN', state_province_region: 'AB', city: "Calgary Int'l", hdd18: 5146, cdd18: 40, latitude: 51.12, longitude: -114.02, elevation: 1084, deltadb: 25, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
203
+ { file: 'CAN_PE_Charlottetown.717060_CWEC.epw', location_name: ' CAN-PE-Charlottetown CDA', energy_plus_location_name: 'Charlottetown CDA_PE_CAN', country: 'CAN', state_province_region: 'PE', city: 'Charlottetown CDA', hdd18: 4647, cdd18: 72, latitude: 46.28, longitude: -63.13, elevation: 54, deltadb: 25.6, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
204
+ { file: 'CAN_MB_Churchill.719130_CWEC.epw', location_name: ' CAN-MB-Churchill', energy_plus_location_name: 'Churchill_MB_CAN', country: 'CAN', state_province_region: 'MB', city: 'Churchill', hdd18: 9114, cdd18: 3, latitude: 58.75, longitude: -94.07, elevation: 29, deltadb: 37.7, a90_1_2004_climate_zone: 8, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
205
+ { file: 'CAN_BC_Comox.718930_CWEC.epw', location_name: ' CAN-BC-Comox', energy_plus_location_name: 'Comox_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Comox', hdd18: 3177, cdd18: 30, latitude: 49.72, longitude: -124.9, elevation: 24, deltadb: 15.2, a90_1_2004_climate_zone: '5C', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
206
+ { file: 'CAN_BC_Cranbrook.718800_CWEC.epw', location_name: ' CAN-BC-Cranbrook', energy_plus_location_name: 'Cranbrook_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Cranbrook', hdd18: 4645, cdd18: 118, latitude: 49.6, longitude: -115.78, elevation: 940, deltadb: 26.6, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
207
+ { file: 'CAN_AB_Edmonton.711230_CWEC.epw', location_name: ' CAN-AB-Edmonton Stony Plain', energy_plus_location_name: 'Edmonton Stony Plain_AB_CAN', country: 'CAN', state_province_region: 'AB', city: 'Edmonton Stony Plain', hdd18: 5583, cdd18: 22, latitude: 53.53, longitude: -114.1, elevation: 723, deltadb: 27.5, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
208
+ { file: 'CAN_SK_Estevan.718620_CWEC.epw', location_name: ' CAN-SK-Estevan', energy_plus_location_name: 'Estevan_SK_CAN', country: 'CAN', state_province_region: 'SK', city: 'Estevan', hdd18: 5370, cdd18: 189, latitude: 49.22, longitude: -102.97, elevation: 581, deltadb: 35.1, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
209
+ { file: 'CAN_AB_Fort.McMurray.719320_CWEC.epw', location_name: ' CAN-AB-Fort McMurray', energy_plus_location_name: 'Fort McMurray_AB_CAN', country: 'CAN', state_province_region: 'AB', city: 'Fort McMurray', hdd18: 6191, cdd18: 65, latitude: 56.65, longitude: -111.22, elevation: 369, deltadb: 33.5, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
210
+ { file: 'CAN_BC_Fort.St.John.719430_CWEC.epw', location_name: ' CAN-BC-Fort St John', energy_plus_location_name: 'Fort St John_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Fort St John', hdd18: 5863, cdd18: 25, latitude: 56.23, longitude: -120.73, elevation: 695, deltadb: 29.1, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
211
+ { file: 'CAN_NB_Fredericton.717000_CWEC.epw', location_name: ' CAN-NB-Fredericton', energy_plus_location_name: 'Fredericton_NB_CAN', country: 'CAN', state_province_region: 'NB', city: 'Fredericton', hdd18: 4734, cdd18: 132, latitude: 45.87, longitude: -66.53, elevation: 20, deltadb: 29.5, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
212
+ { file: 'CAN_NF_Gander.718030_CWEC.epw', location_name: " CAN-NF-Gander Int'l", energy_plus_location_name: "Gander Int'l_NF_CAN", country: 'CAN', state_province_region: 'NF', city: "Gander Int'l", hdd18: 5101, cdd18: 25, latitude: 48.95, longitude: -54.57, elevation: 151, deltadb: 22.6, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
213
+ { file: 'CAN_NF_Goose.718160_CWEC.epw', location_name: ' CAN-NF-Goose', energy_plus_location_name: 'Goose_NF_CAN', country: 'CAN', state_province_region: 'NF', city: 'Goose', hdd18: 6558, cdd18: 38, latitude: 53.32, longitude: -60.37, elevation: 49, deltadb: 33, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
214
+ { file: 'CAN_AB_Grande.Prairie.719400_CWEC.epw', location_name: ' CAN-AB-Grand Prairie', energy_plus_location_name: 'Grand Prairie_AB_CAN', country: 'CAN', state_province_region: 'AB', city: 'Grand Prairie', hdd18: 5897, cdd18: 26, latitude: 55.18, longitude: -118.88, elevation: 669, deltadb: 28.9, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
215
+ { file: 'CAN_NS_Greenwood.713970_CWEC.epw', location_name: ' CAN-NS-Greenwood', energy_plus_location_name: 'Greenwood_NS_CAN', country: 'CAN', state_province_region: 'NS', city: 'Greenwood', hdd18: 4131, cdd18: 128, latitude: 44.98, longitude: -64.92, elevation: 28, deltadb: 23.8, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
216
+ { file: 'CAN_PQ_Grindstone.Island_CWEC.epw', location_name: ' CAN-PQ-Grindstone Island', energy_plus_location_name: 'Grindstone Island_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Grindstone Island', hdd18: 4941, cdd18: 18, latitude: 47.38, longitude: -61.87, elevation: 59, deltadb: 23.8, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
217
+ { file: 'CAN_NT_Inuvik.719570_CWEC.epw', location_name: ' CAN-NT-Inuvik Ua', energy_plus_location_name: 'Inuvik Ua_NT_CAN', country: 'CAN', state_province_region: 'NT', city: 'Inuvik Ua', hdd18: 9952, cdd18: 17, latitude: 68.3, longitude: -133.48, elevation: 68, deltadb: 40.6, a90_1_2004_climate_zone: 8, boiler_fueltype: 'FuelOil#1', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
218
+ { file: 'CAN_BC_Kamloops.718870_CWEC.epw', location_name: ' CAN-BC-Kamloops', energy_plus_location_name: 'Kamloops_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Kamloops', hdd18: 3629, cdd18: 287, latitude: 50.7, longitude: -120.45, elevation: 346, deltadb: 25.6, a90_1_2004_climate_zone: '5B', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
219
+ { file: 'CAN_ON_Kingston.716200_CWEC.epw', location_name: ' CAN-ON-Kingston', energy_plus_location_name: 'Kingston_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Kingston', hdd18: 4287, cdd18: 187, latitude: 44.22, longitude: -76.6, elevation: 93, deltadb: 27.7, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
220
+ { file: 'CAN_PQ_Kuujjuarapik.719050_CWEC.epw', location_name: ' CAN-PQ-Kuujjuarapik', energy_plus_location_name: 'Kuujjuarapik_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Kuujjuarapik', hdd18: 7986, cdd18: 12, latitude: 55.28, longitude: -77.77, elevation: 12, deltadb: 32, a90_1_2004_climate_zone: 8, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
221
+ { file: 'CAN_PQ_Kuujuaq.719060_CWEC.epw', location_name: ' CAN-PQ-Kuujuaq', energy_plus_location_name: 'Kuujuaq_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Kuujuaq', hdd18: 8491, cdd18: 0, latitude: 58.1, longitude: -68.42, elevation: 37, deltadb: 31.8, a90_1_2004_climate_zone: 8, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
222
+ { file: 'CAN_PQ_La.Grande.Riviere.718270_CWEC.epw', location_name: ' CAN-PQ-La Grande Riviere', energy_plus_location_name: 'La Grande Riviere_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'La Grande Riviere', hdd18: 7616, cdd18: 11, latitude: 53.63, longitude: -77.7, elevation: 195, deltadb: 35.2, a90_1_2004_climate_zone: 8, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
223
+ { file: 'CAN_PQ_Lake.Eon.714210_CWEC.epw', location_name: ' CAN-PQ-Lake Eon', energy_plus_location_name: 'Lake Eon_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Lake Eon', hdd18: 7383, cdd18: 8, latitude: 51.87, longitude: -63.28, elevation: 561, deltadb: 33.9, a90_1_2004_climate_zone: 8, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
224
+ { file: 'CAN_AB_Lethbridge.712430_CWEC.epw', location_name: ' CAN-AB-Lethbridge', energy_plus_location_name: 'Lethbridge_AB_CAN', country: 'CAN', state_province_region: 'AB', city: 'Lethbridge', hdd18: 4432, cdd18: 126, latitude: 49.63, longitude: -112.8, elevation: 921, deltadb: 26.5, a90_1_2004_climate_zone: '6B', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
225
+ { file: 'CAN_ON_London.716230_CWEC.epw', location_name: ' CAN-ON-London', energy_plus_location_name: 'London_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'London', hdd18: 4111, cdd18: 211, latitude: 43.03, longitude: -81.15, elevation: 278, deltadb: 27.9, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
226
+ { file: 'CAN_AB_Medicine.Hat.718720_CWEC.epw', location_name: ' CAN-AB-Medicine Hat', energy_plus_location_name: 'Medicine Hat_AB_CAN', country: 'CAN', state_province_region: 'AB', city: 'Medicine Hat', hdd18: 4678, cdd18: 199, latitude: 50.02, longitude: -110.72, elevation: 716, deltadb: 31.6, a90_1_2004_climate_zone: '6B', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
227
+ { file: 'CAN_NB_Miramichi.717440_CWEC.epw', location_name: ' CAN-NB-Miramichi', energy_plus_location_name: 'Miramichi_NB_CAN', country: 'CAN', state_province_region: 'NB', city: 'Miramichi', hdd18: 4921, cdd18: 141, latitude: 47.02, longitude: -65.45, elevation: 33, deltadb: 29.6, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
228
+ { file: 'CAN_PQ_Mont.Joli.717180_CWEC.epw', location_name: ' CAN-PQ-Mont Joli', energy_plus_location_name: 'Mont Joli_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Mont Joli', hdd18: 5522, cdd18: 65, latitude: 48.6, longitude: -68.22, elevation: 52, deltadb: 30.8, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
229
+ { file: 'CAN_PQ_Montreal.Intl.AP.716270_CWEC.epw', location_name: " CAN-PQ-Montreal Int'l", energy_plus_location_name: "Montreal Int'l_PQ_CAN", country: 'CAN', state_province_region: 'PQ', city: "Montreal Int'l", hdd18: 4493, cdd18: 234, latitude: 45.47, longitude: -73.75, elevation: 36, deltadb: 30.2, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
230
+ { file: 'CAN_PQ_Montreal.Jean.Brebeuf.716278_CWEC.epw', location_name: ' CAN-PQ-Montreal Jean Brebeuf', energy_plus_location_name: 'Montreal Jean Brebeuf_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Montreal Jean Brebeuf', hdd18: 4616, cdd18: 209, latitude: 45.5, longitude: -73.62, elevation: 133, deltadb: 31.2, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
231
+ { file: 'CAN_PQ_Montreal.Mirabel.716278_CWEC.epw', location_name: ' CAN-PQ-Montreal Mirabel', energy_plus_location_name: 'Montreal Mirabel_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Montreal Mirabel', hdd18: 4861, cdd18: 102, latitude: 45.68, longitude: -74.03, elevation: 82, deltadb: 33.4, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
232
+ { file: 'CAN_ON_Mount.Forest.716310_CWEC.epw', location_name: ' CAN-ON-Mount Forest', energy_plus_location_name: 'Mount Forest_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Mount Forest', hdd18: 4578, cdd18: 121, latitude: 43.98, longitude: -80.75, elevation: 415, deltadb: 27.7, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
233
+ { file: 'CAN_ON_Muskoka.716300_CWEC.epw', location_name: ' CAN-ON-Muskoka', energy_plus_location_name: 'Muskoka_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Muskoka', hdd18: 4774, cdd18: 97, latitude: 44.97, longitude: -79.3, elevation: 282, deltadb: 29.3, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
234
+ { file: 'CAN_PQ_Nitchequon.CAN270_CWEC.epw', location_name: ' CAN-PQ-Nitchequon', energy_plus_location_name: 'Nitchequon_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Nitchequon', hdd18: 7922, cdd18: 6, latitude: 53.2, longitude: -70.9, elevation: 536, deltadb: 35.8, a90_1_2004_climate_zone: 8, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
235
+ { file: 'CAN_SK_North.Battleford.718760_CWEC.epw', location_name: ' CAN-SK-North Battleford', energy_plus_location_name: 'North Battleford_SK_CAN', country: 'CAN', state_province_region: 'SK', city: 'North Battleford', hdd18: 5962, cdd18: 75, latitude: 52.77, longitude: -108.25, elevation: 548, deltadb: 35.4, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
236
+ { file: 'CAN_ON_North.Bay.717310_CWEC.epw', location_name: ' CAN-ON-North Bay', energy_plus_location_name: 'North Bay_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'North Bay', hdd18: 5341, cdd18: 103, latitude: 46.35, longitude: -79.43, elevation: 371, deltadb: 32.2, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
237
+ { file: 'CAN_ON_Ottawa.716280_CWEC.epw', location_name: " CAN-ON-Ottawa Int'l", energy_plus_location_name: "Ottawa Int'l_ON_CAN", country: 'CAN', state_province_region: 'ON', city: "Ottawa Int'l", hdd18: 4664, cdd18: 189, latitude: 45.32, longitude: -75.67, elevation: 114, deltadb: 31.8, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
238
+ { file: 'CAN_BC_Port.Hardy.711090_CWEC.epw', location_name: ' CAN-BC-Port Hardy', energy_plus_location_name: 'Port Hardy_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Port Hardy', hdd18: 3712, cdd18: 0, latitude: 50.68, longitude: -127.37, elevation: 22, deltadb: 10.8, a90_1_2004_climate_zone: '5C', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
239
+ { file: 'CAN_BC_Prince.George.718960_CWEC.epw', location_name: ' CAN-BC-Prince George', energy_plus_location_name: 'Prince George_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Prince George', hdd18: 5070, cdd18: 15, latitude: 53.88, longitude: -122.68, elevation: 691, deltadb: 26, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
240
+ { file: 'CAN_BC_Prince.Rupert.718980_CWEC.epw', location_name: ' CAN-BC-Prince Rupert', energy_plus_location_name: 'Prince Rupert_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Prince Rupert', hdd18: 4151, cdd18: 0, latitude: 54.3, longitude: -130.43, elevation: 34, deltadb: 13.5, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
241
+ { file: 'CAN_PQ_Quebec.717140_CWEC.epw', location_name: ' CAN-PQ-Quebec City', energy_plus_location_name: 'Quebec City_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Quebec City', hdd18: 4964, cdd18: 111, latitude: 46.8, longitude: -71.38, elevation: 73, deltadb: 31, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
242
+ { file: 'CAN_SK_Regina.718630_CWEC.epw', location_name: ' CAN-SK-Regina', energy_plus_location_name: 'Regina_SK_CAN', country: 'CAN', state_province_region: 'SK', city: 'Regina', hdd18: 5646, cdd18: 129, latitude: 50.43, longitude: -104.67, elevation: 577, deltadb: 35.4, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
243
+ { file: 'CAN_NU_Resolute.719240_CWEC.epw', location_name: ' CAN-NU-Resolute', energy_plus_location_name: 'Resolute_NU_CAN', country: 'CAN', state_province_region: 'NU', city: 'Resolute', hdd18: 12_570, cdd18: 0, latitude: 74.72, longitude: -94.98, elevation: 67, deltadb: 35.9, a90_1_2004_climate_zone: 8, boiler_fueltype: 'FuelOil#2', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
244
+ { file: 'CAN_PQ_Riviere.du.Loup.717150_CWEC.epw', location_name: ' CAN-PQ-Riviere Du Loup', energy_plus_location_name: 'Riviere Du Loup_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Riviere Du Loup', hdd18: 5424, cdd18: 82, latitude: 47.8, longitude: -69.55, elevation: 148, deltadb: 30.1, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
245
+ { file: 'CAN_PQ_Roberval.717280_CWEC.epw', location_name: ' CAN-PQ-Roberval', energy_plus_location_name: 'Roberval_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Roberval', hdd18: 5757, cdd18: 97, latitude: 48.52, longitude: -72.27, elevation: 179, deltadb: 35.6, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
246
+ { file: 'CAN_NS_Sable.Island.716000_CWEC.epw', location_name: ' CAN-NS-Sable Island', energy_plus_location_name: 'Sable Island_NS_CAN', country: 'CAN', state_province_region: 'NS', city: 'Sable Island', hdd18: 3860, cdd18: 14, latitude: 43.93, longitude: -60.02, elevation: 4, deltadb: 18.3, a90_1_2004_climate_zone: '5A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
247
+ { file: 'CAN_NB_Saint.John.716090_CWEC.epw', location_name: ' CAN-NB-Saint John', energy_plus_location_name: 'Saint John_NB_CAN', country: 'CAN', state_province_region: 'NB', city: 'Saint John', hdd18: 4695, cdd18: 12, latitude: 45.32, longitude: -65.88, elevation: 109, deltadb: 23.8, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
248
+ { file: 'CAN_BC_Sandspit.711010_CWEC.epw', location_name: ' CAN-BC-Sandspit', energy_plus_location_name: 'Sandspit_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Sandspit', hdd18: 3644, cdd18: 0, latitude: 53.25, longitude: -131.82, elevation: 6, deltadb: 13.1, a90_1_2004_climate_zone: '5C', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
249
+ { file: 'CAN_SK_Saskatoon.718660_CWEC.epw', location_name: ' CAN-SK-Saskatoon', energy_plus_location_name: 'Saskatoon_SK_CAN', country: 'CAN', state_province_region: 'SK', city: 'Saskatoon', hdd18: 5812, cdd18: 84, latitude: 52.17, longitude: -106.68, elevation: 504, deltadb: 34.4, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
250
+ { file: 'CAN_ON_Sault.Ste.Marie.712600_CWEC.epw', location_name: ' CAN-ON-Sault Ste Marie', energy_plus_location_name: 'Sault Ste Marie_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Sault Ste Marie', hdd18: 4993, cdd18: 75, latitude: 46.48, longitude: -84.52, elevation: 192, deltadb: 28.3, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
251
+ { file: 'CAN_PQ_Schefferville.718280_CWEC.epw', location_name: ' CAN-PQ-Schefferville', energy_plus_location_name: 'Schefferville_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Schefferville', hdd18: 8057, cdd18: 7, latitude: 54.8, longitude: -66.82, elevation: 521, deltadb: 34.6, a90_1_2004_climate_zone: 8, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
252
+ { file: 'CAN_PQ_Sept-Iles.718110_CWEC.epw', location_name: ' CAN-PQ-Sept-Iles', energy_plus_location_name: 'Sept-Iles_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Sept-Iles', hdd18: 6134, cdd18: 4, latitude: 50.22, longitude: -66.27, elevation: 55, deltadb: 30.9, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
253
+ { file: 'CAN_NS_Shearwater.716010_CWEC.epw', location_name: ' CAN-NS-Shearwater', energy_plus_location_name: 'Shearwater_NS_CAN', country: 'CAN', state_province_region: 'NS', city: 'Shearwater', hdd18: 4197, cdd18: 58, latitude: 44.63, longitude: -63.5, elevation: 51, deltadb: 22, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
254
+ { file: 'CAN_PQ_Sherbrooke.716100_CWEC.epw', location_name: ' CAN-PQ-Sherbrooke', energy_plus_location_name: 'Sherbrooke_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Sherbrooke', hdd18: 5068, cdd18: 93, latitude: 45.43, longitude: -71.68, elevation: 241, deltadb: 28.2, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
255
+ { file: 'CAN_ON_Simcoe.715270_CWEC.epw', location_name: ' CAN-ON-Simcoe', energy_plus_location_name: 'Simcoe_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Simcoe', hdd18: 4066, cdd18: 190, latitude: 42.85, longitude: -80.27, elevation: 241, deltadb: 26.4, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
256
+ { file: 'CAN_BC_Smithers.719500_CWEC.epw', location_name: ' CAN-BC-Smithers', energy_plus_location_name: 'Smithers_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Smithers', hdd18: 5265, cdd18: 22, latitude: 54.82, longitude: -127.18, elevation: 523, deltadb: 24.2, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
257
+ { file: 'CAN_PQ_St.Hubert.713710_CWEC.epw', location_name: ' CAN-PQ-St Hubert', energy_plus_location_name: 'St Hubert_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'St Hubert', hdd18: 4566, cdd18: 251, latitude: 45.52, longitude: -73.42, elevation: 27, deltadb: 31.2, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
258
+ { file: 'CAN_NF_St.Johns.718010_CWEC.epw', location_name: " CAN-NF-St John's", energy_plus_location_name: "St John's_NF_CAN", country: 'CAN', state_province_region: 'NF', city: "St John's", hdd18: 4886, cdd18: 24, latitude: 47.62, longitude: -52.73, elevation: 140, deltadb: 20.5, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
259
+ { file: 'CAN_PQ_Ste.Agathe.des.Monts.717200_CWEC.epw', location_name: ' CAN-PQ-Ste Agathe Des Monts', energy_plus_location_name: 'Ste Agathe Des Monts_PQ_CAN', country: 'CAN', state_province_region: 'PQ', city: 'Ste Agathe Des Monts', hdd18: 5350, cdd18: 45, latitude: 46.05, longitude: -74.28, elevation: 395, deltadb: 29.6, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
260
+ { file: 'CAN_NF_Stephenville.718150_CWEC.epw', location_name: ' CAN-NF-Stephenville', energy_plus_location_name: 'Stephenville_NF_CAN', country: 'CAN', state_province_region: 'NF', city: 'Stephenville', hdd18: 4724, cdd18: 10, latitude: 48.53, longitude: -58.55, elevation: 26, deltadb: 23.1, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
261
+ { file: 'CAN_BC_Summerland.717680_CWEC.epw', location_name: ' CAN-BC-Summerland', energy_plus_location_name: 'Summerland_BC_CAN', country: 'CAN', state_province_region: 'BC', city: 'Summerland', hdd18: 3388, cdd18: 199, latitude: 49.57, longitude: -119.65, elevation: 479, deltadb: 21.8, a90_1_2004_climate_zone: '5A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
262
+ { file: 'CAN_SK_Swift.Current.718700_CWEC.epw', location_name: ' CAN-SK-Swift Current', energy_plus_location_name: 'Swift Current_SK_CAN', country: 'CAN', state_province_region: 'SK', city: 'Swift Current', hdd18: 5227, cdd18: 96, latitude: 50.28, longitude: -107.68, elevation: 818, deltadb: 30.8, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
263
+ { file: 'CAN_NS_Sydney.717070_CWEC.epw', location_name: ' CAN-NS-Sydney', energy_plus_location_name: 'Sydney_NS_CAN', country: 'CAN', state_province_region: 'NS', city: 'Sydney', hdd18: 4634, cdd18: 51, latitude: 46.17, longitude: -60.05, elevation: 62, deltadb: 24, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
264
+ { file: 'CAN_MB_The.Pas.718670_CWEC.epw', location_name: ' CAN-MB-The Pas', energy_plus_location_name: 'The Pas_MB_CAN', country: 'CAN', state_province_region: 'MB', city: 'The Pas', hdd18: 6442, cdd18: 106, latitude: 53.97, longitude: -101.1, elevation: 271, deltadb: 37.9, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
265
+ { file: 'CAN_ON_Thunder.Bay.717490_CWEC.epw', location_name: ' CAN-ON-Thunder Bay', energy_plus_location_name: 'Thunder Bay_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Thunder Bay', hdd18: 5624, cdd18: 60, latitude: 48.37, longitude: -89.32, elevation: 199, deltadb: 33.8, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
266
+ { file: 'CAN_ON_Timmins.717390_CWEC.epw', location_name: ' CAN-ON-Timmins', energy_plus_location_name: 'Timmins_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Timmins', hdd18: 5952, cdd18: 63, latitude: 48.57, longitude: -81.37, elevation: 295, deltadb: 33.8, a90_1_2004_climate_zone: 7, boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
267
+ { file: 'CAN_ON_Toronto.716240_CWEC.epw', location_name: " CAN-ON-Toronto Int'l", energy_plus_location_name: "Toronto Int'l_ON_CAN", country: 'CAN', state_province_region: 'ON', city: "Toronto Int'l", hdd18: 4088, cdd18: 231, latitude: 43.67, longitude: -79.63, elevation: 173, deltadb: 26.6, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
268
+ { file: 'CAN_ON_Trenton.716210_CWEC.epw', location_name: ' CAN-ON-Trenton', energy_plus_location_name: 'Trenton_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Trenton', hdd18: 4176, cdd18: 207, latitude: 44.12, longitude: -77.53, elevation: 86, deltadb: 27.7, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
269
+ { file: 'CAN_NS_Truro.713980_CWEC.epw', location_name: ' CAN-NS-Truro', energy_plus_location_name: 'Truro_NS_CAN', country: 'CAN', state_province_region: 'NS', city: 'Truro', hdd18: 4537, cdd18: 35, latitude: 45.37, longitude: -63.27, elevation: 40, deltadb: 25.2, a90_1_2004_climate_zone: '6A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
270
+ { file: 'CAN_PQ_Val.d.Or.717250_CWEC.epw', location_name: " CAN-PQ-Val d'Or", energy_plus_location_name: "Val d'Or_PQ_CAN", country: 'CAN', state_province_region: 'PQ', city: "Val d'Or", hdd18: 6129, cdd18: 79, latitude: 48.07, longitude: -77.78, elevation: 337, deltadb: 35, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
271
+ { file: 'CAN_BC_Vancouver.718920_CWEC.epw', location_name: " CAN-BC-Vancouver Int'l", energy_plus_location_name: "Vancouver Int'l_BC_CAN", country: 'CAN', state_province_region: 'BC', city: "Vancouver Int'l", hdd18: 3019, cdd18: 4, latitude: 49.18, longitude: -123.17, elevation: 2, deltadb: 13.9, a90_1_2004_climate_zone: '5C', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
272
+ { file: 'CAN_BC_Victoria.717990_CWEC.epw', location_name: " CAN-BC-Victoria Int'l", energy_plus_location_name: "Victoria Int'l_BC_CAN", country: 'CAN', state_province_region: 'BC', city: "Victoria Int'l", hdd18: 3075, cdd18: 8, latitude: 48.65, longitude: -123.43, elevation: 19, deltadb: 12.3, a90_1_2004_climate_zone: '5C', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
273
+ { file: 'CAN_YT_Whitehorse.719640_CWEC.epw', location_name: ' CAN-YT-Whitehorse', energy_plus_location_name: 'Whitehorse_YT_CAN', country: 'CAN', state_province_region: 'YT', city: 'Whitehorse', hdd18: 6946, cdd18: 2, latitude: 60.72, longitude: -135.07, elevation: 703, deltadb: 34.5, a90_1_2004_climate_zone: 7, boiler_fueltype: 'FuelOil#1', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' },
274
+ { file: 'CAN_ON_Windsor.715380_CWEC.epw', location_name: ' CAN-ON-Windsor', energy_plus_location_name: 'Windsor_ON_CAN', country: 'CAN', state_province_region: 'ON', city: 'Windsor', hdd18: 3570, cdd18: 367, latitude: 42.27, longitude: -82.97, elevation: 190, deltadb: 27.1, a90_1_2004_climate_zone: '5A', boiler_fueltype: 'NaturalGas', baseboard_type: 'Hot Water', mau_type: true, mau_heating_coil_type: 'Hot Water', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Gas', heating_coil_type_sys4: 'Gas', heating_coil_type_sys6: 'Hot Water', fan_type: 'var_speed_drive' },
275
+ { file: 'CAN_MB_Winnipeg.718520_CWEC.epw', location_name: " CAN-MB-Winnipeg Int'l", energy_plus_location_name: "Winnipeg Int'l_MB_CAN", country: 'CAN', state_province_region: 'MB', city: "Winnipeg Int'l", hdd18: 5754, cdd18: 197, latitude: 49.9, longitude: -97.23, elevation: 239, deltadb: 37.8, a90_1_2004_climate_zone: 7, boiler_fueltype: 'Electricity', baseboard_type: 'Electric', mau_type: true, mau_heating_coil_type: 'Electric', mau_cooling_type: 'DX', chiller_type: 'Scroll', heating_coil_type_sys_3: 'Electric', heating_coil_type_sys4: 'Electric', heating_coil_type_sys6: 'Electric', fan_type: 'var_speed_drive' }
276
+ ].freeze
277
+
278
+ # this method is used to populate user interfaces if needed from the hash above.
279
+ def self.get_canadian_weather_file_names
276
280
  canadian_file_names = []
277
281
  BTAP::Environment::WeatherData1.each { |hash| canadian_file_names << hash[:file] }
278
282
  return canadian_file_names
279
283
  end
280
-
281
- #this method returns the default system fuel types by epw_file.
284
+
285
+ # this method returns the default system fuel types by epw_file.
282
286
  def self.get_canadian_system_defaults_by_weatherfile_name(epw_file)
283
- if data = BTAP::Environment::WeatherData1.find { |data| data[:file] == epw_file.strip }
284
- return data[:boiler_fueltype], data[:baseboard_type], data[:mau_type], data[:mau_heating_coil_type], data[:mau_cooling_type], data[:chiller_type], data[:heating_coil_type_sys_3], data[:heating_coil_type_sys4],data[:heating_coil_type_sys6], data[:fan_type]
287
+ if (data = BTAP::Environment::WeatherData1.find { |d| d[:file] == epw_file.strip })
288
+ return data[:boiler_fueltype], data[:baseboard_type], data[:mau_type], data[:mau_heating_coil_type], data[:mau_cooling_type], data[:chiller_type], data[:heating_coil_type_sys_3], data[:heating_coil_type_sys4], data[:heating_coil_type_sys6], data[:fan_type]
285
289
  else
286
290
  puts 'Not found!'
287
291
  end
288
292
  end
289
-
290
-
291
293
 
292
-
293
- #This method will create a climate index file.
294
- #@author phylroy.lopez@nrcan.gc.ca
295
- #@param folder [String]
296
- #@param output_file [String]
297
- def self.create_climate_index_file(folder = "#{File.dirname(__FILE__)}/../../../weather", output_file = "C:/test/phylroy.csv" )
298
- data = ""
294
+ # This method will create a climate index file.
295
+ # @author phylroy.lopez@nrcan.gc.ca
296
+ # @param folder [String]
297
+ # @param output_file [String]
298
+ def self.create_climate_index_file(folder = "#{File.dirname(__FILE__)}/../../../weather", output_file = 'C:/test/phylroy.csv')
299
+ data = ''
299
300
  counter = 0
300
- File.open(output_file, 'w') { |file|
301
- data << "file,location_name,energy_plus_location_name,country,state_province_region,city,hdd10,hdd18,cdd10,cdd18,latitude,longitude,elevation, deltaDB, climate_zone, cz_standard, summer_wet_months, winter_dry_months,autumn_months, spring_months, typical_summer_wet_week, typical_winter_dry_week, typical_autumn_week, typical_spring_week\n"
302
- BTAP::FileIO::get_find_files_from_folder_by_extension(folder, 'epw').each do |wfile|
301
+ File.open(output_file, 'w') do |file|
302
+ puts "outpus #{output_file}"
303
+ data << "file,location_name,energy_plus_location_name,country,state_province_region,city,hdd10,hdd18,cdd10,cdd18,latitude,longitude,elevation, deltaDB, climate_zone, cz_standard, summer_wet_months, winter_dry_months,autumn_months, spring_months, typical_summer_wet_week, typical_winter_dry_week, typical_autumn_week, typical_spring_week, heating_design_info[1],cooling_design_info[1],extremes_design_info[1]\n"
304
+ BTAP::FileIO.get_find_files_from_folder_by_extension(folder, 'epw').each do |wfile|
303
305
  wf = BTAP::Environment::WeatherFile.new(wfile)
304
- data << "#{File.basename(wfile)}, #{wf.location_name}\,#{wf.energy_plus_location_name},#{wf.country}, #{wf.state_province_region}, #{wf.city}, #{wf.hdd10}, #{wf.hdd18},#{wf.cdd10},#{wf.cdd18},#{wf.latitude}, #{wf.longitude}, #{wf.elevation}, #{wf.delta_dry_bulb} ,#{wf.climate_zone},#{wf.standard},#{wf.summer_wet_months}, #{wf.winter_dry_months},#{wf.autumn_months}, #{wf.spring_months}, #{wf.typical_summer_wet_week}, #{wf.typical_winter_dry_week}, #{wf.typical_autumn_week}, #{wf.typical_spring_week}\n"
306
+ data << "#{File.basename(wfile)}, #{wf.location_name}\,#{wf.energy_plus_location_name},#{wf.country}, #{wf.state_province_region}, #{wf.city}, #{wf.hdd10}, #{wf.hdd18},#{wf.cdd10},#{wf.cdd18},#{wf.latitude}, #{wf.longitude}, #{wf.elevation}, #{wf.delta_dry_bulb} ,#{wf.climate_zone},#{wf.standard},#{wf.summer_wet_months}, #{wf.winter_dry_months},#{wf.autumn_months}, #{wf.spring_months}, #{wf.typical_summer_wet_week}, #{wf.typical_winter_dry_week}, #{wf.typical_autumn_week}, #{wf.typical_spring_week},#{wf.heating_design_info[1]},#{wf.cooling_design_info[1]},#{wf.extremes_design_info[1]}\n"
305
307
  counter += 1
306
308
  end
307
309
  file.write(data)
308
-
309
- }
310
+ end
310
311
  puts "parsed #{counter} weather files."
311
312
  end
312
-
313
-
314
313
 
315
314
  class WeatherFile
316
-
317
315
  attr_accessor :location_name,
318
- :energy_plus_location_name,
319
- :latitude,
320
- :longitude,
321
- :elevation,
322
- :city,
323
- :state_province_region,
324
- :country,
325
- :hdd18,
326
- :cdd18,
327
- :hdd10,
328
- :cdd10,
329
- :monthly_dry_bulb,
330
- :delta_dry_bulb,
331
- :climate_zone,
332
- :standard,
333
- :summer_wet_months,
334
- :winter_dry_months,
335
- :autumn_months,
336
- :spring_months,
337
- :typical_summer_wet_week,
338
- :typical_winter_dry_week ,
339
- :typical_autumn_week,
340
- :typical_spring_week
341
-
342
-
343
-
344
- Year = 0
345
- Month = 1
346
- Day = 2
347
- Hour= 3
348
- Minute = 4
349
- Data_Source = 5
350
- Dry_Bulb_Temperature = 6
351
- Dew_Point_Temperature = 7
352
- Relative_Humidity = 8
353
- Atmospheric_Station_Pressure = 9
354
- Extraterrestrial_Horizontal_Radiation = 10 #not used
355
- Extraterrestrial_Direct_Normal_Radiation = 11 #not used
356
- Horizontal_Infrared_Radiation_Intensity = 12
357
- Global_Horizontal_Radiation = 13 #not used
358
- Direct_Normal_Radiation = 14
359
- Diffuse_Horizontal_Radiation = 15
360
- Global_Horizontal_Illuminance = 16 #not used
361
- Direct_Normal_Illuminance = 17#not used
362
- Diffuse_Horizontal_Illuminance = 18#not used
363
- Zenith_Luminance = 19#not used
364
- Wind_Direction = 20
365
- Wind_Speed = 21
366
- Total_Sky_Cover = 22#not used
367
- Opaque_Sky_Cover = 23#not used
368
- Visibility = 24#not used
369
- Ceiling_Height = 25#not used
370
- Present_Weather_Observation = 26
371
- Present_Weather_Codes = 27
372
- Precipitable_Water = 28 #not used
373
- Aerosol_Optical_Depth = 29 #not used
374
- Snow_Depth = 30
375
- Days_Since_Last_Snowfall = 31#not used
376
- Albedo = 32 #not used
377
- Liquid_Precipitation_Depth = 33
378
- Liquid_Precipitation_Quantity = 34
379
-
380
- #This method initializes and returns self.
381
- #@author phylroy.lopez@nrcan.gc.ca
382
- #@param weather_file [String]
383
- #@return [String] self
316
+ :energy_plus_location_name,
317
+ :latitude,
318
+ :longitude,
319
+ :elevation,
320
+ :city,
321
+ :state_province_region,
322
+ :country,
323
+ :hdd18,
324
+ :cdd18,
325
+ :hdd10,
326
+ :cdd10,
327
+ :heating_design_info,
328
+ :cooling_design_info,
329
+ :extremes_design_info,
330
+ :monthly_dry_bulb,
331
+ :delta_dry_bulb,
332
+ :climate_zone,
333
+ :standard,
334
+ :summer_wet_months,
335
+ :winter_dry_months,
336
+ :autumn_months,
337
+ :spring_months,
338
+ :typical_summer_wet_week,
339
+ :typical_winter_dry_week,
340
+ :typical_autumn_week,
341
+ :typical_spring_week
342
+
343
+ YEAR = 0
344
+ MONTH = 1
345
+ DAY = 2
346
+ HOUR = 3
347
+ MINUTE = 4
348
+ DATA_SOURCE = 5
349
+ DRY_BULB_TEMPERATURE = 6
350
+ DEW_POINT_TEMPERATURE = 7
351
+ RELATIVE_HUMIDITY = 8
352
+ ATMOSPHERIC_STATION_PRESSURE = 9
353
+ EXTRATERRESTRIAL_HORIZONTAL_RADIATION = 10 # not used
354
+ EXTRATERRESTRIAL_DIRECT_NORMAL_RADIATION = 11 # not used
355
+ HORIZONTAL_INFRARED_RADIATION_INTENSITY = 12
356
+ GLOBAL_HORIZONTAL_RADIATION = 13 # not used
357
+ DIRECT_NORMAL_RADIATION = 14
358
+ DIFFUSE_HORIZONTAL_RADIATION = 15
359
+ GLOBAL_HORIZONTAL_ILLUMINANCE = 16 # not used
360
+ DIRECT_NORMAL_ILLUMINANCE = 17 # not used
361
+ DIFFUSE_HORIZONTAL_ILLUMINANCE = 18 # not used
362
+ ZENITH_LUMINANCE = 19 # not used
363
+ WIND_DIRECTION = 20
364
+ WIND_SPEED = 21
365
+ TOTAL_SKY_COVER = 22 # not used
366
+ OPAQUE_SKY_COVER = 23 # not used
367
+ VISIBILITY = 24 # not used
368
+ CEILING_HEIGHT = 25 # not used
369
+ PRESENT_WEATHER_OBSERVATION = 26
370
+ PRESENT_WEATHER_CODES = 27
371
+ PRECIPITABLE_WATER = 28 # not used
372
+ AEROSOL_OPTICAL_DEPTH = 29 # not used
373
+ SNOW_DEPTH = 30
374
+ DAYS_SINCE_LAST_SNOWFALL = 31 # not used
375
+ ALBEDO = 32 # not used
376
+ LIQUID_PRECIPITATION_DEPTH = 33
377
+ LIQUID_PRECIPITATION_QUANTITY = 34
378
+
379
+ # This method initializes and returns self.
380
+ # @author phylroy.lopez@nrcan.gc.ca
381
+ # @param weather_file [String]
382
+ # @return [String] self
384
383
  def initialize(weather_file)
385
384
  # Define the openstudio-standards weather location
386
- top_dir = File.expand_path( '../../..',File.dirname(__FILE__))
385
+ top_dir = File.expand_path('../../..', File.dirname(__FILE__))
387
386
  weather_dir = "#{top_dir}/data/weather"
388
-
387
+
389
388
  # First check if the epw file exists at a full path. If not found there,
390
389
  # check for the file in the openstudio-standards/data/weather directory.
391
390
  weather_file = weather_file.to_s
392
391
  @epw_filepath = nil
393
392
  @ddy_filepath = nil
394
393
  @stat_filepath = nil
395
- if File.exists?(weather_file)
396
- @epw_filepath = "#{weather_file}"
397
- @ddy_filepath = "#{weather_file.sub('epw','ddy')}"
398
- @stat_filepath = "#{weather_file.sub('epw','stat')}"
399
- elsif File.exists?("#{weather_dir}/#{weather_file}")
394
+ if File.exist?(weather_file)
395
+ @epw_filepath = weather_file.to_s
396
+ @ddy_filepath = weather_file.sub('epw', 'ddy').to_s
397
+ @stat_filepath = weather_file.sub('epw', 'stat').to_s
398
+ elsif File.exist?("#{weather_dir}/#{weather_file}")
400
399
  @epw_filepath = "#{weather_dir}/#{weather_file}"
401
- @ddy_filepath = "#{weather_dir}/#{weather_file.sub('epw','ddy')}"
402
- @stat_filepath = "#{weather_dir}/#{weather_file.sub('epw','stat')}"
400
+ @ddy_filepath = "#{weather_dir}/#{weather_file.sub('epw', 'ddy')}"
401
+ @stat_filepath = "#{weather_dir}/#{weather_file.sub('epw', 'stat')}"
403
402
  else
404
403
  raise("Could not find weather file #{weather_file}. Make sure file path is correct.")
405
404
  end
406
-
405
+
407
406
  # Ensure that epw, ddy, and stat file all exist
408
- raise("Weather file #{@epw_filepath} not found.") unless File.exists?(@epw_filepath) && @epw_filepath.downcase.include?('.epw')
409
- raise("Weather file ddy #{@ddy_filepath} not found.") unless File.exists?(@ddy_filepath) && @ddy_filepath.downcase.include?('.ddy')
410
- raise("Weather file stat #{@stat_filepath} not found.") unless File.exists?(@stat_filepath) && @stat_filepath.downcase.include?('.stat')
407
+ raise("Weather file #{@epw_filepath} not found.") unless File.exist?(@epw_filepath) && @epw_filepath.downcase.include?('.epw')
408
+ raise("Weather file ddy #{@ddy_filepath} not found.") unless File.exist?(@ddy_filepath) && @ddy_filepath.downcase.include?('.ddy')
409
+ raise("Weather file stat #{@stat_filepath} not found.") unless File.exist?(@stat_filepath) && @stat_filepath.downcase.include?('.stat')
411
410
 
412
- #load file objects.
411
+ # load file objects.
413
412
  @epw_file = OpenStudio::EpwFile.new(OpenStudio::Path.new(@epw_filepath))
414
413
  if OpenStudio::EnergyPlus.loadAndTranslateIdf(@ddy_filepath).empty?
415
- raise ("Unable to load ddy idf file#{@ddy_filepath}.")
414
+ raise "Unable to load ddy idf file#{@ddy_filepath}."
416
415
  else
417
416
  @ddy_file = OpenStudio::EnergyPlus.loadAndTranslateIdf(@ddy_filepath).get
418
417
  end
419
- @stat_file = EnergyPlus::StatFile.new( @stat_filepath )
418
+ @stat_file = EnergyPlus::StatFile.new(@stat_filepath)
419
+
420
+ # assign variables.
420
421
 
421
- #assign variables.
422
-
423
422
  @latitude = @epw_file.latitude
424
423
  @longitude = @epw_file.longitude
425
424
  @elevation = @epw_file.elevation
426
425
  @city = @epw_file.city
427
- @state_province_region = @epw_file.stateProvinceRegion
426
+ @state_province_region = @epw_file.stateProvinceRegion
428
427
  @country = @epw_file.country
429
428
  @hdd18 = @stat_file.hdd18
430
429
  @cdd18 = @stat_file.cdd18
431
430
  @hdd10 = @stat_file.hdd10
432
431
  @cdd10 = @stat_file.cdd10
432
+ @heating_design_info = @stat_file.heating_design_info
433
+ @cooling_design_info = @stat_file.cooling_design_info
434
+ @extremes_design_info = @stat_file.extremes_design_info
433
435
  @monthly_dry_bulb = @stat_file.monthly_dry_bulb
434
436
  @mean_dry_bulb = @stat_file.mean_dry_bulb
435
437
  @delta_dry_bulb = @stat_file.delta_dry_bulb
@@ -448,14 +450,14 @@ module BTAP
448
450
  return self
449
451
  end
450
452
 
451
- #This method will set the weather file and returns a log string.
452
- #@author phylroy.lopez@nrcan.gc.ca
453
- #@param model [OpenStudio::model::Model] A model object
454
- #@return [String] log
453
+ # This method will set the weather file and returns a log string.
454
+ # @author phylroy.lopez@nrcan.gc.ca
455
+ # @param model [OpenStudio::model::Model] A model object
456
+ # @return [String] log
455
457
  def set_weather_file(model, runner = nil)
456
- BTAP::runner_register("Info", "BTAP::Environment::WeatherFile::set_weather",runner)
457
- OpenStudio::Model::WeatherFile::setWeatherFile(model, @epw_file)
458
- BTAP::runner_register("Info", "Set model \"#{model.building.get.name}\" to weather file #{model.weatherFile.get.path.get}.\n",runner)
458
+ BTAP.runner_register('Info', 'BTAP::Environment::WeatherFile::set_weather', runner)
459
+ OpenStudio::Model::WeatherFile.setWeatherFile(model, @epw_file)
460
+ BTAP.runner_register('Info', "Set model \"#{model.building.get.name}\" to weather file #{model.weatherFile.get.path.get}.\n", runner)
459
461
 
460
462
  # Add or update site data
461
463
  site = model.getSite
@@ -465,22 +467,22 @@ module BTAP
465
467
  site.setTimeZone(@epw_file.timeZone)
466
468
  site.setElevation(@epw_file.elevation)
467
469
 
468
- BTAP::runner_register("Info","Setting water main temperatures via parsing of STAT file.", runner )
470
+ BTAP.runner_register('Info', 'Setting water main temperatures via parsing of STAT file.', runner)
469
471
  water_temp = model.getSiteWaterMainsTemperature
470
472
  water_temp.setAnnualAverageOutdoorAirTemperature(@stat_file.mean_dry_bulb)
471
473
  water_temp.setMaximumDifferenceInMonthlyAverageOutdoorAirTemperatures(@stat_file.delta_dry_bulb)
472
- BTAP::runner_register("Info","SiteWaterMainsTemperature.AnnualAverageOutdoorAirTemperature = #{@stat_file.mean_dry_bulb}.", runner )
473
- BTAP::runner_register("Info","SiteWaterMainsTemperature.MaximumDifferenceInMonthlyAverageOutdoorAirTemperatures = #{@stat_file.delta_dry_bulb}.", runner )
474
+ BTAP.runner_register('Info', "SiteWaterMainsTemperature.AnnualAverageOutdoorAirTemperature = #{@stat_file.mean_dry_bulb}.", runner)
475
+ BTAP.runner_register('Info', "SiteWaterMainsTemperature.MaximumDifferenceInMonthlyAverageOutdoorAirTemperatures = #{@stat_file.delta_dry_bulb}.", runner)
474
476
 
475
477
  # Remove all the Design Day objects that are in the file
476
- model.getObjectsByType("OS:SizingPeriod:DesignDay".to_IddObjectType).each { |d| d.remove }
478
+ model.getObjectsByType('OS:SizingPeriod:DesignDay'.to_IddObjectType).each(&:remove)
477
479
 
478
480
  # Load in the ddy file based on convention that it is in the same directory and has the same basename as the weather
479
- @ddy_file.getObjectsByType("OS:SizingPeriod:DesignDay".to_IddObjectType).each do |d|
481
+ @ddy_file.getObjectsByType('OS:SizingPeriod:DesignDay'.to_IddObjectType).each do |d|
480
482
  # grab only the ones that matter
481
483
  ddy_list = /(Htg 99.6. Condns DB)|(Clg .4. Condns WB=>MDB)|(Clg .4% Condns DB=>MWB)/
482
484
  if d.name.get =~ ddy_list
483
- BTAP::runner_register("Info","Adding design day '#{d.name}'.",runner)
485
+ BTAP.runner_register('Info', "Adding design day '#{d.name}'.", runner)
484
486
  # add the object to the existing model
485
487
  model.addObject(d.clone)
486
488
  end
@@ -488,22 +490,22 @@ module BTAP
488
490
  return true
489
491
  end
490
492
 
491
- #This method scans the epw file into memory.
492
- #@author phylroy.lopez@nrcan.gc.ca
493
- def scan()
494
- @filearray = Array.new()
495
- file = File.new(@epw_filepath, "r")
493
+ # This method scans the epw file into memory.
494
+ # @author phylroy.lopez@nrcan.gc.ca
495
+ def scan
496
+ @filearray = []
497
+ file = File.new(@epw_filepath, 'r')
496
498
  while (line = file.gets)
497
- @filearray.push(line.split(","))
499
+ @filearray.push(line.split(','))
498
500
  end
499
501
  file.close
500
502
  end
501
503
 
502
- #This method will sets column to a value.
503
- #@author phylroy.lopez@nrcan.gc.ca
504
- #@param column [String]
505
- #@param value [Fixnum]
506
- def setcolumntovalue(column,value)
504
+ # This method will sets column to a value.
505
+ # @author phylroy.lopez@nrcan.gc.ca
506
+ # @param column [String]
507
+ # @param value [Fixnum]
508
+ def setcolumntovalue(column, value)
507
509
  @filearray.each do |line|
508
510
  unless line.first =~ /\D(.*)/
509
511
  line[column] = value
@@ -511,140 +513,130 @@ module BTAP
511
513
  end
512
514
  end
513
515
 
514
- #This method will eliminate all radiation from the weather and returns self.
515
- #@author phylroy.lopez@nrcan.gc.ca
516
- #@return [String] self
517
- def eliminate_all_radiation()
518
- self.scan() if @filearray == nil
519
- setcolumntovalue(Extraterrestrial_Horizontal_Radiation,"0")#not used
520
- setcolumntovalue(Extraterrestrial_Direct_Normal_Radiation,"0")#not used
521
- setcolumntovalue(Horizontal_Infrared_Radiation_Intensity,"315")
522
- setcolumntovalue(Global_Horizontal_Radiation,"0")#not used
523
- setcolumntovalue(Direct_Normal_Radiation,"0")
524
- setcolumntovalue(Diffuse_Horizontal_Radiation,"0")
525
- setcolumntovalue(Total_Sky_Cover,"10")#not used
526
- setcolumntovalue(Opaque_Sky_Cover,"10")#not used
527
- setcolumntovalue(Visibility,"0")#not used
528
- setcolumntovalue(Ceiling_Height,"0")#not used
529
- #lux values
530
- setcolumntovalue(Global_Horizontal_Illuminance,"0")#not used
531
- setcolumntovalue(Direct_Normal_Illuminance,"0")#not used
532
- setcolumntovalue(Diffuse_Horizontal_Illuminance,"0")#not used
533
- setcolumntovalue(Zenith_Luminance,"0")#not used
516
+ # This method will eliminate all radiation from the weather and returns self.
517
+ # @author phylroy.lopez@nrcan.gc.ca
518
+ # @return [String] self
519
+ def eliminate_all_radiation
520
+ scan if @filearray.nil?
521
+ setcolumntovalue(EXTRATERRESTRIAL_HORIZONTAL_RADIATION, '0') # not used
522
+ setcolumntovalue(EXTRATERRESTRIAL_DIRECT_NORMAL_RADIATION, '0') # not used
523
+ setcolumntovalue(HORIZONTAL_INFRARED_RADIATION_INTENSITY, '315')
524
+ setcolumntovalue(GLOBAL_HORIZONTAL_RADIATION, '0') # not used
525
+ setcolumntovalue(DIRECT_NORMAL_RADIATION, '0')
526
+ setcolumntovalue(DIFFUSE_HORIZONTAL_RADIATION, '0')
527
+ setcolumntovalue(TOTAL_SKY_COVER, '10') # not used
528
+ setcolumntovalue(OPAQUE_SKY_COVER, '10') # not used
529
+ setcolumntovalue(VISIBILITY, '0') # not used
530
+ setcolumntovalue(CEILING_HEIGHT, '0') # not used
531
+ # lux values
532
+ setcolumntovalue(GLOBAL_HORIZONTAL_ILLUMINANCE, '0') # not used
533
+ setcolumntovalue(DIRECT_NORMAL_ILLUMINANCE, '0') # not used
534
+ setcolumntovalue(DIFFUSE_HORIZONTAL_ILLUMINANCE, '0') # not used
535
+ setcolumntovalue(ZENITH_LUMINANCE, '0') # not used
534
536
  return self
535
537
  end
536
538
 
537
- #This method will eliminate solar radiation and returns self.
538
- #@author phylroy.lopez@nrcan.gc.ca
539
- #@return [String] self
540
- def eliminate_only_solar_radiation()
541
- self.scan() if @filearray == nil
542
- setcolumntovalue(Global_Horizontal_Radiation,"0")#not used
543
- setcolumntovalue(Direct_Normal_Radiation,"0")
544
- setcolumntovalue(Diffuse_Horizontal_Radiation,"0")
539
+ # This method will eliminate solar radiation and returns self.
540
+ # @author phylroy.lopez@nrcan.gc.ca
541
+ # @return [String] self
542
+ def eliminate_only_solar_radiation
543
+ scan if @filearray.nil?
544
+ setcolumntovalue(GLOBAL_HORIZONTAL_RADIATION, '0') # not used
545
+ setcolumntovalue(DIRECT_NORMAL_RADIATION, '0')
546
+ setcolumntovalue(DIFFUSE_HORIZONTAL_RADIATION, '0')
545
547
  return self
546
548
  end
547
549
 
548
- #This method will eliminate all radiation except solar and returns self.
549
- #@author phylroy.lopez@nrcan.gc.ca
550
- #@return [String] self
551
- def eliminate_all_radiation_except_solar()
552
- self.scan() if @filearray == nil
553
- setcolumntovalue(Extraterrestrial_Horizontal_Radiation,"0")#not used
554
- setcolumntovalue(Extraterrestrial_Direct_Normal_Radiation,"0")#not used
555
- setcolumntovalue(Horizontal_Infrared_Radiation_Intensity,"315")
556
- setcolumntovalue(Total_Sky_Cover,"10")#not used
557
- setcolumntovalue(Opaque_Sky_Cover,"10")#not used
558
- setcolumntovalue(Visibility,"0")#not used
559
- setcolumntovalue(Ceiling_Height,"0")#not used
560
- #lux values
561
- setcolumntovalue(Global_Horizontal_Illuminance,"0")#not used
562
- setcolumntovalue(Direct_Normal_Illuminance,"0")#not used
563
- setcolumntovalue(Diffuse_Horizontal_Illuminance,"0")#not used
564
- setcolumntovalue(Zenith_Luminance,"0")#not used
550
+ # This method will eliminate all radiation except solar and returns self.
551
+ # @author phylroy.lopez@nrcan.gc.ca
552
+ # @return [String] self
553
+ def eliminate_all_radiation_except_solar
554
+ scan if @filearray.nil?
555
+ setcolumntovalue(EXTRATERRESTRIAL_HORIZONTAL_RADIATION, '0') # not used
556
+ setcolumntovalue(EXTRATERRESTRIAL_DIRECT_NORMAL_RADIATION, '0') # not used
557
+ setcolumntovalue(HORIZONTAL_INFRARED_RADIATION_INTENSITY, '315')
558
+ setcolumntovalue(TOTAL_SKY_COVER, '10') # not used
559
+ setcolumntovalue(OPAQUE_SKY_COVER, '10') # not used
560
+ setcolumntovalue(VISIBILITY, '0') # not used
561
+ setcolumntovalue(CEILING_HEIGHT, '0') # not used
562
+ # lux values
563
+ setcolumntovalue(GLOBAL_HORIZONTAL_ILLUMINANCE, '0') # not used
564
+ setcolumntovalue(DIRECT_NORMAL_ILLUMINANCE, '0') # not used
565
+ setcolumntovalue(DIFFUSE_HORIZONTAL_ILLUMINANCE, '0') # not used
566
+ setcolumntovalue(ZENITH_LUMINANCE, '0') # not used
565
567
  return self
566
568
  end
567
569
 
568
- #This method will eliminate percipitation and returns self.
569
- #@author phylroy.lopez@nrcan.gc.ca
570
- #@return [String] self
570
+ # This method will eliminate percipitation and returns self.
571
+ # @author phylroy.lopez@nrcan.gc.ca
572
+ # @return [String] self
571
573
  def eliminate_percipitation
572
- self.scan() if @filearray == nil
573
- setcolumntovalue(Present_Weather_Observation, "0")
574
- setcolumntovalue(Present_Weather_Codes,"999999999") #no weather. Clear day.
575
- setcolumntovalue(Snow_Depth,"0")
576
- setcolumntovalue(Liquid_Precipitation_Depth,"0")
577
- setcolumntovalue(Liquid_Precipitation_Quantity,"0")
574
+ scan if @filearray.nil?
575
+ setcolumntovalue(PRESENT_WEATHER_OBSERVATION, '0')
576
+ setcolumntovalue(PRESENT_WEATHER_CODES, '999999999') # no weather. Clear day.
577
+ setcolumntovalue(SNOW_DEPTH, '0')
578
+ setcolumntovalue(LIQUID_PRECIPITATION_DEPTH, '0')
579
+ setcolumntovalue(LIQUID_PRECIPITATION_QUANTITY, '0')
578
580
  return self
579
581
  end
580
582
 
581
- #This method eliminates wind and returns self.
582
- #@author phylroy.lopez@nrcan.gc.ca
583
- #@return [String] self
583
+ # This method eliminates wind and returns self.
584
+ # @author phylroy.lopez@nrcan.gc.ca
585
+ # @return [String] self
584
586
  def eliminate_wind
585
- self.scan() if @filearray == nil
586
- setcolumntovalue(Wind_Direction,"0")
587
- setcolumntovalue(Wind_Speed,"0")
587
+ scan if @filearray.nil?
588
+ setcolumntovalue(WIND_DIRECTION, '0')
589
+ setcolumntovalue(WIND_SPEED, '0')
588
590
  return self
589
591
  end
590
592
 
591
- #This method sets Constant Dry and Dew Point Temperature Humidity And Pressure and returns self.
592
- #@author phylroy.lopez@nrcan.gc.ca
593
- #@param dbt [Float] dry bulb temperature
594
- #@param dpt [Float] dew point temperature
595
- #@param hum [Fixnum] humidity
596
- #@param press [Fixnum] pressure
597
- #@return [String] self
598
- def setConstantDryandDewPointTemperatureHumidityAndPressure(dbt = "0.0",dpt="-1.1",hum="92",press="98500")
599
- self.scan() if @filearray == nil
600
- setcolumntovalue(Dry_Bulb_Temperature,dbt)
601
- setcolumntovalue(Dew_Point_Temperature,dpt)
602
- setcolumntovalue(Relative_Humidity,hum)
603
- setcolumntovalue(Atmospheric_Station_Pressure,press)
593
+ # This method sets Constant Dry and Dew Point Temperature Humidity And Pressure and returns self.
594
+ # @author phylroy.lopez@nrcan.gc.ca
595
+ # @param dbt [Float] dry bulb temperature
596
+ # @param dpt [Float] dew point temperature
597
+ # @param hum [Fixnum] humidity
598
+ # @param press [Fixnum] pressure
599
+ # @return [String] self
600
+ def set_constant_dry_and_dewpoint_temperature_humidity_pressure(dbt = '0.0', dpt = '-1.1', hum = '92', press = '98500')
601
+ scan if @filearray.nil?
602
+ setcolumntovalue(DRY_BULB_TEMPERATURE, dbt)
603
+ setcolumntovalue(DEW_POINT_TEMPERATURE, dpt)
604
+ setcolumntovalue(RELATIVE_HUMIDITY, hum)
605
+ setcolumntovalue(ATMOSPHERIC_STATION_PRESSURE, press)
604
606
  return self
605
607
  end
606
608
 
607
- #This method writes to a file.
608
- #@author phylroy.lopez@nrcan.gc.ca
609
- #@param filename [String]
609
+ # This method writes to a file.
610
+ # @author phylroy.lopez@nrcan.gc.ca
611
+ # @param filename [String]
610
612
  def writetofile(filename)
611
- self.scan() if @filearray == nil
613
+ scan if @filearray.nil?
612
614
 
613
615
  begin
614
616
  FileUtils.mkdir_p(File.dirname(filename))
615
- file = File.open(filename, "w")
617
+ file = File.open(filename, 'w')
616
618
  @filearray.each do |line|
617
619
  firstvalue = true
618
- newline = ""
620
+ newline = ''
619
621
  line.each do |value|
620
622
  if firstvalue == true
621
623
  firstvalue = false
622
624
  else
623
- newline = newline +","
625
+ newline += ','
624
626
  end
625
- newline = newline + value
627
+ newline += value
626
628
  end
627
629
  file.puts(newline)
628
630
  end
629
631
  rescue IOError => e
630
- #some error occur, dir not writable etc.
632
+ # some error occur, dir not writable etc.
631
633
  ensure
632
- file.close unless file == nil
634
+ file.close unless file.nil?
633
635
  end
634
- #copies original file
635
- FileUtils.cp(@ddy_filepath, "#{File.dirname(filename)}/#{File.basename(filename,'.epw')}.ddy")
636
- FileUtils.cp(@stat_filepath, "#{File.dirname(filename)}/#{File.basename(filename,'.epw')}.stat")
636
+ # copies original file
637
+ FileUtils.cp(@ddy_filepath, "#{File.dirname(filename)}/#{File.basename(filename, '.epw')}.ddy")
638
+ FileUtils.cp(@stat_filepath, "#{File.dirname(filename)}/#{File.basename(filename, '.epw')}.stat")
637
639
  end
638
-
639
- end #Environment
640
-
641
-
642
-
643
-
640
+ end # Environment
644
641
  end
645
642
  end
646
-
647
-
648
-
649
-
650
-