# Open the class to add methods to put weather info into the model class OpenStudio::Model::Model # Helper method to set the weather file, import the design days, set # water mains temperature, and set ground temperature. # Based on ChangeBuildingLocation measure by Nicholas Long def add_design_days_and_weather_file(building_type, building_vintage, climate_zone, epw_file) require_relative 'Weather.stat_file' OpenStudio::logFree(OpenStudio::Info, 'openstudio.weather.Model', "Started adding weather file for climate zone: #{climate_zone}.") # Define the weather file for each climate zone climate_zone_weather_file_map = { 'ASHRAE 169-2006-1A' => 'USA_FL_Miami.Intl.AP.722020_TMY3.epw', 'ASHRAE 169-2006-1B' => 'SAU_Riyadh.404380_IWEC.epw', 'ASHRAE 169-2006-2A' => 'USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3.epw', 'ASHRAE 169-2006-2B' => 'USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw', 'ASHRAE 169-2006-3A' => 'USA_TN_Memphis.Intl.AP.723340_TMY3.epw', 'ASHRAE 169-2006-3B' => 'USA_TX_El.Paso.Intl.AP.722700_TMY3.epw', 'ASHRAE 169-2006-3C' => 'USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw', 'ASHRAE 169-2006-4A' => 'USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3.epw', 'ASHRAE 169-2006-4B' => 'USA_NM_Albuquerque.Intl.AP.723650_TMY3.epw', 'ASHRAE 169-2006-4C' => 'USA_OR_Salem-McNary.Field.726940_TMY3.epw', 'ASHRAE 169-2006-5A' => 'USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw', 'ASHRAE 169-2006-5B' => 'USA_ID_Boise.Air.Terminal.726810_TMY3.epw', 'ASHRAE 169-2006-5C' => 'CAN_BC_Vancouver.718920_CWEC.epw', 'ASHRAE 169-2006-6A' => 'USA_VT_Burlington.Intl.AP.726170_TMY3.epw', 'ASHRAE 169-2006-6B' => 'USA_MT_Helena.Rgnl.AP.727720_TMY3.epw', 'ASHRAE 169-2006-7A' => 'USA_MN_Duluth.Intl.AP.727450_TMY3.epw', 'ASHRAE 169-2006-7B' => 'USA_MN_Duluth.Intl.AP.727450_TMY3.epw', 'ASHRAE 169-2006-8A' => 'USA_AK_Fairbanks.Intl.AP.702610_TMY3.epw', 'ASHRAE 169-2006-8B' => 'USA_AK_Fairbanks.Intl.AP.702610_TMY3.epw', #For measure input 'NECB HDD Method' => "#{epw_file}", #For testing 'NECB-CNEB-5' => "#{epw_file}", 'NECB-CNEB-6' => "#{epw_file}", 'NECB-CNEB-7a' => "#{epw_file}", 'NECB-CNEB-7b' => "#{epw_file}", 'NECB-CNEB-8' => "#{epw_file}" } # Define where the weather files live top_dir = File.expand_path( '../../..',File.dirname(__FILE__)) weather_dir = "#{top_dir}/data/weather" # Get the weather file name from the hash weather_file_name = climate_zone_weather_file_map[climate_zone] if weather_file_name.nil? OpenStudio::logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not determine the weather file for climate zone: #{climate_zone}.") return false end # Add Weather File unless (Pathname.new weather_dir).absolute? weather_dir = File.expand_path(File.join(File.dirname(__FILE__), weather_dir)) end weather_file = File.join(weather_dir, weather_file_name) epw_file = OpenStudio::EpwFile.new(weather_file) OpenStudio::Model::WeatherFile.setWeatherFile(self, epw_file).get weather_name = "#{epw_file.city}_#{epw_file.stateProvinceRegion}_#{epw_file.country}" weather_lat = epw_file.latitude weather_lon = epw_file.longitude weather_time = epw_file.timeZone weather_elev = epw_file.elevation # Add or update site data site = self.getSite site.setName(weather_name) site.setLatitude(weather_lat) site.setLongitude(weather_lon) site.setTimeZone(weather_time) site.setElevation(weather_elev) #Add or update ground temperature data ground_temp_vals = self.find_object($os_standards["ground_temperatures"], {'template'=>building_vintage, 'climate_zone'=>climate_zone, 'building_type'=>building_type}) if ground_temp_vals && ground_temp_vals['jan'] groundTemp = self.getSiteGroundTemperatureBuildingSurface groundTemp.setJanuaryGroundTemperature(ground_temp_vals['jan']) groundTemp.setFebruaryGroundTemperature(ground_temp_vals['feb']) groundTemp.setMarchGroundTemperature(ground_temp_vals['mar']) groundTemp.setAprilGroundTemperature(ground_temp_vals['apr']) groundTemp.setMayGroundTemperature(ground_temp_vals['may']) groundTemp.setJuneGroundTemperature(ground_temp_vals['jun']) groundTemp.setJulyGroundTemperature(ground_temp_vals['jul']) groundTemp.setAugustGroundTemperature(ground_temp_vals['aug']) groundTemp.setSeptemberGroundTemperature(ground_temp_vals['sep']) groundTemp.setOctoberGroundTemperature(ground_temp_vals['oct']) groundTemp.setNovemberGroundTemperature(ground_temp_vals['nov']) groundTemp.setDecemberGroundTemperature(ground_temp_vals['dec']) else OpenStudio::logFree(OpenStudio::Warn, 'openstudio.weather.Model', "Could not find ground temperatures; will use generic temperatures, which will skew results.") groundTemp = self.getSiteGroundTemperatureBuildingSurface groundTemp.setJanuaryGroundTemperature(19.527) groundTemp.setFebruaryGroundTemperature(19.502) groundTemp.setMarchGroundTemperature(19.536) groundTemp.setAprilGroundTemperature(19.598) groundTemp.setMayGroundTemperature(20.002) groundTemp.setJuneGroundTemperature(21.640) groundTemp.setJulyGroundTemperature(22.225) groundTemp.setAugustGroundTemperature(22.375) groundTemp.setSeptemberGroundTemperature(21.449) groundTemp.setOctoberGroundTemperature(20.121) groundTemp.setNovemberGroundTemperature(19.802) groundTemp.setDecemberGroundTemperature(19.633) end # Add SiteWaterMainsTemperature -- via parsing of STAT file. stat_filename = "#{File.join(File.dirname(weather_file), File.basename(weather_file, '.*'))}.stat" if File.exist? stat_filename stat_file = EnergyPlus::StatFile.new(stat_filename) water_temp = self.getSiteWaterMainsTemperature water_temp.setAnnualAverageOutdoorAirTemperature(stat_file.mean_dry_bulb) water_temp.setMaximumDifferenceInMonthlyAverageOutdoorAirTemperatures(stat_file.delta_dry_bulb) #OpenStudio::logFree(OpenStudio::Info, "openstudio.weather.Model", "Mean dry bulb is #{stat_file.mean_dry_bulb}") #OpenStudio::logFree(OpenStudio::Info, "openstudio.weather.Model", "Delta dry bulb is #{stat_file.delta_dry_bulb}") else OpenStudio::logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not find .stat file for: #{stat_filename}.") return false end # Remove any existing Design Day objects that are in the file self.getDesignDays.each { |d| d.remove } # Load in the ddy file based on convention that it is in # the same directory and has the same basename as the epw file. ddy_file = "#{File.join(File.dirname(weather_file), File.basename(weather_file, '.*'))}.ddy" if File.exist? ddy_file ddy_model = OpenStudio::EnergyPlus.loadAndTranslateIdf(ddy_file).get ddy_model.getObjectsByType('OS:SizingPeriod:DesignDay'.to_IddObjectType).each do |d| # Import the 99.6% Heating and 0.4% Cooling design days ddy_list = /(Htg 99.6. Condns DB)|(Clg .4% Condns DB=>MWB)/ if d.name.get =~ ddy_list self.addObject(d.clone) #OpenStudio::logFree(OpenStudio::Info, 'openstudio.weather.Model', "Added #{d.name} design day.") end end else OpenStudio::logFree(OpenStudio::Error, 'openstudio.weather.Model', "Could not find .stat file for: #{stat_filename}.") puts "Could not find .stat file for: #{stat_filename}." return false end OpenStudio::logFree(OpenStudio::Info, 'openstudio.weather.Model', "Finished adding weather file for climate zone: #{climate_zone}.") puts "Could not find .stat file for: #{stat_filename}." return true end end # ********************************************************************* # * Copyright (c) 2008-2015, Natural Resources Canada # * All rights reserved. # * # * This library is free software; you can redistribute it and/or # * modify it under the terms of the GNU Lesser General Public # * License as published by the Free Software Foundation; either # * version 2.1 of the License, or (at your option) any later version. # * # * This library is distributed in the hope that it will be useful, # * but WITHOUT ANY WARRANTY; without even the implied warranty of # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # * Lesser General Public License for more details. # * # * You should have received a copy of the GNU Lesser General Public # * License along with this library; if not, write to the Free Software # * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # **********************************************************************/ #This module has been created to make it easier to manipulate weather files can contains region specific data. module BTAP module Environment require_relative 'Weather.stat_file' #keeping data is hash/json for now. Can always export / import to csv if required automatically. WeatherData1 = [ {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"}, {: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"} ] #this method is used to populate user interfaces if needed from the hash above. def self.get_canadian_weather_file_names() canadian_file_names = [] BTAP::Environment::WeatherData1.each { |hash| canadian_file_names << hash[:file] } return canadian_file_names end #this method returns the default system fuel types by epw_file. def self.get_canadian_system_defaults_by_weatherfile_name(epw_file) if data = BTAP::Environment::WeatherData1.find { |data| data[:file] == epw_file.strip } 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] else puts 'Not found!' end end #This method will create a climate index file. #@author phylroy.lopez@nrcan.gc.ca #@param folder [String] #@param output_file [String] def self.create_climate_index_file(folder = "#{File.dirname(__FILE__)}/../../../weather", output_file = "C:/test/phylroy.csv" ) data = "" counter = 0 File.open(output_file, 'w') { |file| 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" BTAP::FileIO::get_find_files_from_folder_by_extension(folder, 'epw').each do |wfile| wf = BTAP::Environment::WeatherFile.new(wfile) 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" counter += 1 end file.write(data) } puts "parsed #{counter} weather files." end class WeatherFile attr_accessor :location_name, :energy_plus_location_name, :latitude, :longitude, :elevation, :city, :state_province_region, :country, :hdd18, :cdd18, :hdd10, :cdd10, :monthly_dry_bulb, :delta_dry_bulb, :climate_zone, :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 Year = 0 Month = 1 Day = 2 Hour= 3 Minute = 4 Data_Source = 5 Dry_Bulb_Temperature = 6 Dew_Point_Temperature = 7 Relative_Humidity = 8 Atmospheric_Station_Pressure = 9 Extraterrestrial_Horizontal_Radiation = 10 #not used Extraterrestrial_Direct_Normal_Radiation = 11 #not used Horizontal_Infrared_Radiation_Intensity = 12 Global_Horizontal_Radiation = 13 #not used Direct_Normal_Radiation = 14 Diffuse_Horizontal_Radiation = 15 Global_Horizontal_Illuminance = 16 #not used Direct_Normal_Illuminance = 17#not used Diffuse_Horizontal_Illuminance = 18#not used Zenith_Luminance = 19#not used Wind_Direction = 20 Wind_Speed = 21 Total_Sky_Cover = 22#not used Opaque_Sky_Cover = 23#not used Visibility = 24#not used Ceiling_Height = 25#not used Present_Weather_Observation = 26 Present_Weather_Codes = 27 Precipitable_Water = 28 #not used Aerosol_Optical_Depth = 29 #not used Snow_Depth = 30 Days_Since_Last_Snowfall = 31#not used Albedo = 32 #not used Liquid_Precipitation_Depth = 33 Liquid_Precipitation_Quantity = 34 #This method initializes and returns self. #@author phylroy.lopez@nrcan.gc.ca #@param weather_file [String] #@return [String] self def initialize(weather_file) # Define the openstudio-standards weather location top_dir = File.expand_path( '../../..',File.dirname(__FILE__)) weather_dir = "#{top_dir}/data/weather" # First check if the epw file exists at a full path. If not found there, # check for the file in the openstudio-standards/data/weather directory. weather_file = weather_file.to_s @epw_filepath = nil @ddy_filepath = nil @stat_filepath = nil if File.exists?(weather_file) @epw_filepath = "#{weather_file}" @ddy_filepath = "#{weather_file.sub('epw','ddy')}" @stat_filepath = "#{weather_file.sub('epw','stat')}" elsif File.exists?("#{weather_dir}/#{weather_file}") @epw_filepath = "#{weather_dir}/#{weather_file}" @ddy_filepath = "#{weather_dir}/#{weather_file.sub('epw','ddy')}" @stat_filepath = "#{weather_dir}/#{weather_file.sub('epw','stat')}" else raise("Could not find weather file #{weather_file}. Make sure file path is correct.") end # Ensure that epw, ddy, and stat file all exist raise("Weather file #{@epw_filepath} not found.") unless File.exists?(@epw_filepath) && @epw_filepath.downcase.include?('.epw') raise("Weather file ddy #{@ddy_filepath} not found.") unless File.exists?(@ddy_filepath) && @ddy_filepath.downcase.include?('.ddy') raise("Weather file stat #{@stat_filepath} not found.") unless File.exists?(@stat_filepath) && @stat_filepath.downcase.include?('.stat') #load file objects. @epw_file = OpenStudio::EpwFile.new(OpenStudio::Path.new(@epw_filepath)) if OpenStudio::EnergyPlus.loadAndTranslateIdf(@ddy_filepath).empty? raise ("Unable to load ddy idf file#{@ddy_filepath}.") else @ddy_file = OpenStudio::EnergyPlus.loadAndTranslateIdf(@ddy_filepath).get end @stat_file = EnergyPlus::StatFile.new( @stat_filepath ) #assign variables. @latitude = @epw_file.latitude @longitude = @epw_file.longitude @elevation = @epw_file.elevation @city = @epw_file.city @state_province_region = @epw_file.stateProvinceRegion @country = @epw_file.country @hdd18 = @stat_file.hdd18 @cdd18 = @stat_file.cdd18 @hdd10 = @stat_file.hdd10 @cdd10 = @stat_file.cdd10 @monthly_dry_bulb = @stat_file.monthly_dry_bulb @mean_dry_bulb = @stat_file.mean_dry_bulb @delta_dry_bulb = @stat_file.delta_dry_bulb @location_name = "#{@country}-#{@state_province_region}-#{@city}" @energy_plus_location_name = "#{@city}_#{@state_province_region}_#{@country}" @climate_zone = @stat_file.climate_zone @standard = @stat_file.standard @summer_wet_months = @stat_file.summer_wet_months @winter_dry_months = @stat_file.winter_dry_months @autumn_months = @stat_file.autumn_months @spring_months = @stat_file.spring_months @typical_summer_wet_week = @stat_file.typical_summer_wet_week @typical_winter_dry_week = @stat_file.typical_winter_dry_week @typical_autumn_week = @stat_file.typical_autumn_week @typical_spring_week = @stat_file.typical_spring_week return self end #This method will set the weather file and returns a log string. #@author phylroy.lopez@nrcan.gc.ca #@param model [OpenStudio::model::Model] A model object #@return [String] log def set_weather_file(model, runner = nil) BTAP::runner_register("Info", "BTAP::Environment::WeatherFile::set_weather",runner) OpenStudio::Model::WeatherFile::setWeatherFile(model, @epw_file) BTAP::runner_register("Info", "Set model \"#{model.building.get.name}\" to weather file #{model.weatherFile.get.path.get}.\n",runner) # Add or update site data site = model.getSite site.setName("#{@epw_file.city}_#{@epw_file.stateProvinceRegion}_#{@epw_file.country}") site.setLatitude(@epw_file.latitude) site.setLongitude(@epw_file.longitude) site.setTimeZone(@epw_file.timeZone) site.setElevation(@epw_file.elevation) BTAP::runner_register("Info","Setting water main temperatures via parsing of STAT file.", runner ) water_temp = model.getSiteWaterMainsTemperature water_temp.setAnnualAverageOutdoorAirTemperature(@stat_file.mean_dry_bulb) water_temp.setMaximumDifferenceInMonthlyAverageOutdoorAirTemperatures(@stat_file.delta_dry_bulb) BTAP::runner_register("Info","SiteWaterMainsTemperature.AnnualAverageOutdoorAirTemperature = #{@stat_file.mean_dry_bulb}.", runner ) BTAP::runner_register("Info","SiteWaterMainsTemperature.MaximumDifferenceInMonthlyAverageOutdoorAirTemperatures = #{@stat_file.delta_dry_bulb}.", runner ) # Remove all the Design Day objects that are in the file model.getObjectsByType("OS:SizingPeriod:DesignDay".to_IddObjectType).each { |d| d.remove } # Load in the ddy file based on convention that it is in the same directory and has the same basename as the weather @ddy_file.getObjectsByType("OS:SizingPeriod:DesignDay".to_IddObjectType).each do |d| # grab only the ones that matter ddy_list = /(Htg 99.6. Condns DB)|(Clg .4. Condns WB=>MDB)|(Clg .4% Condns DB=>MWB)/ if d.name.get =~ ddy_list BTAP::runner_register("Info","Adding design day '#{d.name}'.",runner) # add the object to the existing model model.addObject(d.clone) end end return true end #This method scans the epw file into memory. #@author phylroy.lopez@nrcan.gc.ca def scan() @filearray = Array.new() file = File.new(@epw_filepath, "r") while (line = file.gets) @filearray.push(line.split(",")) end file.close end #This method will sets column to a value. #@author phylroy.lopez@nrcan.gc.ca #@param column [String] #@param value [Fixnum] def setcolumntovalue(column,value) @filearray.each do |line| unless line.first =~ /\D(.*)/ line[column] = value end end end #This method will eliminate all radiation from the weather and returns self. #@author phylroy.lopez@nrcan.gc.ca #@return [String] self def eliminate_all_radiation() self.scan() if @filearray == nil setcolumntovalue(Extraterrestrial_Horizontal_Radiation,"0")#not used setcolumntovalue(Extraterrestrial_Direct_Normal_Radiation,"0")#not used setcolumntovalue(Horizontal_Infrared_Radiation_Intensity,"315") setcolumntovalue(Global_Horizontal_Radiation,"0")#not used setcolumntovalue(Direct_Normal_Radiation,"0") setcolumntovalue(Diffuse_Horizontal_Radiation,"0") setcolumntovalue(Total_Sky_Cover,"10")#not used setcolumntovalue(Opaque_Sky_Cover,"10")#not used setcolumntovalue(Visibility,"0")#not used setcolumntovalue(Ceiling_Height,"0")#not used #lux values setcolumntovalue(Global_Horizontal_Illuminance,"0")#not used setcolumntovalue(Direct_Normal_Illuminance,"0")#not used setcolumntovalue(Diffuse_Horizontal_Illuminance,"0")#not used setcolumntovalue(Zenith_Luminance,"0")#not used return self end #This method will eliminate solar radiation and returns self. #@author phylroy.lopez@nrcan.gc.ca #@return [String] self def eliminate_only_solar_radiation() self.scan() if @filearray == nil setcolumntovalue(Global_Horizontal_Radiation,"0")#not used setcolumntovalue(Direct_Normal_Radiation,"0") setcolumntovalue(Diffuse_Horizontal_Radiation,"0") return self end #This method will eliminate all radiation except solar and returns self. #@author phylroy.lopez@nrcan.gc.ca #@return [String] self def eliminate_all_radiation_except_solar() self.scan() if @filearray == nil setcolumntovalue(Extraterrestrial_Horizontal_Radiation,"0")#not used setcolumntovalue(Extraterrestrial_Direct_Normal_Radiation,"0")#not used setcolumntovalue(Horizontal_Infrared_Radiation_Intensity,"315") setcolumntovalue(Total_Sky_Cover,"10")#not used setcolumntovalue(Opaque_Sky_Cover,"10")#not used setcolumntovalue(Visibility,"0")#not used setcolumntovalue(Ceiling_Height,"0")#not used #lux values setcolumntovalue(Global_Horizontal_Illuminance,"0")#not used setcolumntovalue(Direct_Normal_Illuminance,"0")#not used setcolumntovalue(Diffuse_Horizontal_Illuminance,"0")#not used setcolumntovalue(Zenith_Luminance,"0")#not used return self end #This method will eliminate percipitation and returns self. #@author phylroy.lopez@nrcan.gc.ca #@return [String] self def eliminate_percipitation self.scan() if @filearray == nil setcolumntovalue(Present_Weather_Observation, "0") setcolumntovalue(Present_Weather_Codes,"999999999") #no weather. Clear day. setcolumntovalue(Snow_Depth,"0") setcolumntovalue(Liquid_Precipitation_Depth,"0") setcolumntovalue(Liquid_Precipitation_Quantity,"0") return self end #This method eliminates wind and returns self. #@author phylroy.lopez@nrcan.gc.ca #@return [String] self def eliminate_wind self.scan() if @filearray == nil setcolumntovalue(Wind_Direction,"0") setcolumntovalue(Wind_Speed,"0") return self end #This method sets Constant Dry and Dew Point Temperature Humidity And Pressure and returns self. #@author phylroy.lopez@nrcan.gc.ca #@param dbt [Float] dry bulb temperature #@param dpt [Float] dew point temperature #@param hum [Fixnum] humidity #@param press [Fixnum] pressure #@return [String] self def setConstantDryandDewPointTemperatureHumidityAndPressure(dbt = "0.0",dpt="-1.1",hum="92",press="98500") self.scan() if @filearray == nil setcolumntovalue(Dry_Bulb_Temperature,dbt) setcolumntovalue(Dew_Point_Temperature,dpt) setcolumntovalue(Relative_Humidity,hum) setcolumntovalue(Atmospheric_Station_Pressure,press) return self end #This method writes to a file. #@author phylroy.lopez@nrcan.gc.ca #@param filename [String] def writetofile(filename) self.scan() if @filearray == nil begin FileUtils.mkdir_p(File.dirname(filename)) file = File.open(filename, "w") @filearray.each do |line| firstvalue = true newline = "" line.each do |value| if firstvalue == true firstvalue = false else newline = newline +"," end newline = newline + value end file.puts(newline) end rescue IOError => e #some error occur, dir not writable etc. ensure file.close unless file == nil end #copies original file FileUtils.cp(@ddy_filepath, "#{File.dirname(filename)}/#{File.basename(filename,'.epw')}.ddy") FileUtils.cp(@stat_filepath, "#{File.dirname(filename)}/#{File.basename(filename,'.epw')}.stat") end end #Environment end end