openstudio-standards 0.2.17.rc1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/openstudio_standards_duplicates_log.csv +5 -0
- data/lib/openstudio-standards/btap/btap_result.rb +138 -138
- data/lib/openstudio-standards/btap/economics.rb +58 -53
- data/lib/openstudio-standards/btap/envelope.rb +1 -1
- data/lib/openstudio-standards/btap/fileio.rb +12 -12
- data/lib/openstudio-standards/btap/measures.rb +63 -59
- data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +5 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +8 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +9 -3
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +53 -23
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +15 -1
- data/lib/openstudio-standards/standards/Standards.Construction.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Model.rb +18 -18
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +5 -5
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +3 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +43 -40
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.entryways.json +19 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.parking.json +13 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +9 -9
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +5 -1
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +5 -1
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +8 -4
- data/lib/openstudio-standards/standards/necb/ECMS/nv.rb +8 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +7 -3
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +4 -4
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +1 -1
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +5 -0
- metadata +4 -2
| @@ -21,9 +21,9 @@ class NECB2011 | |
| 21 21 | 
             
              # @return [Bool] returns true if an economizer is required, false if not
         | 
| 22 22 | 
             
              def air_loop_hvac_economizer_required?(air_loop_hvac)
         | 
| 23 23 | 
             
                economizer_required = false
         | 
| 24 | 
            -
             | 
| 24 | 
            +
             | 
| 25 25 | 
             
                # need a better way to determine if an economizer is needed.
         | 
| 26 | 
            -
                return economizer_required if ((air_loop_hvac.name.to_s.include? 'Outpatient F1' ) || | 
| 26 | 
            +
                return economizer_required if ((air_loop_hvac.name.to_s.include? 'Outpatient F1' ) ||
         | 
| 27 27 | 
             
                                               (air_loop_hvac.sizingSystem.typeofLoadtoSizeOn.to_s == "VentilationRequirement"))
         | 
| 28 28 |  | 
| 29 29 | 
             
                # A big number of btu per hr as the minimum requirement
         | 
| @@ -1997,7 +1997,11 @@ class NECB2011 | |
| 1997 1997 | 
             
                air_loop_sizing.setCentralHeatingDesignSupplyAirTemperature(system_data[:CentralHeatingDesignSupplyAirTemperature]) unless system_data[:CentralHeatingDesignSupplyAirTemperature].nil?
         | 
| 1998 1998 | 
             
                air_loop_sizing.setAllOutdoorAirinCooling(system_data[:AllOutdoorAirinCooling]) unless system_data[:AllOutdoorAirinCooling].nil?
         | 
| 1999 1999 | 
             
                air_loop_sizing.setAllOutdoorAirinHeating(system_data[:AllOutdoorAirinHeating]) unless system_data[:AllOutdoorAirinHeating].nil?
         | 
| 2000 | 
            -
                 | 
| 2000 | 
            +
                if model.version < OpenStudio::VersionString.new('2.7.0')
         | 
| 2001 | 
            +
                  air_loop_sizing.setMinimumSystemAirFlowRatio(system_data[:MinimumSystemAirFlowRatio]) unless system_data[:MinimumSystemAirFlowRatio].nil?
         | 
| 2002 | 
            +
                else
         | 
| 2003 | 
            +
                  air_loop_sizing.setCentralHeatingMaximumSystemAirFlowRatio(system_data[:MinimumSystemAirFlowRatio]) unless system_data[:MinimumSystemAirFlowRatio].nil?
         | 
| 2004 | 
            +
                end
         | 
| 2001 2005 | 
             
                return mau_air_loop
         | 
| 2002 2006 | 
             
              end
         | 
| 2003 2007 |  | 
| @@ -835,7 +835,7 @@ class NECB2011 | |
| 835 835 | 
             
                      air_loop_info[:cooling_coils][:dx_single_speed] << coil
         | 
| 836 836 | 
             
                      single_speed = supply_comp.to_CoilCoolingDXSingleSpeed.get
         | 
| 837 837 | 
             
                      coil[:name] = single_speed.name.get
         | 
| 838 | 
            -
                      coil[:cop] = single_speed.ratedCOP. | 
| 838 | 
            +
                      coil[:cop] = single_speed.ratedCOP.to_f
         | 
| 839 839 | 
             
                      coil[:nominal_total_capacity_w] = model.sqlFile.get.execAndReturnFirstDouble("SELECT Value FROM TabularDataWithStrings WHERE ReportName='EquipmentSummary' AND ReportForString='Entire Facility' AND TableName='Cooling Coils' AND ColumnName='Nominal Total Capacity' AND RowName='#{coil[:name].upcase}' ")
         | 
| 840 840 | 
             
                      coil[:nominal_total_capacity_w] = validate_optional(coil[:nominal_total_capacity_w], model, -1.0)
         | 
| 841 841 | 
             
                    end
         | 
| @@ -844,8 +844,8 @@ class NECB2011 | |
| 844 844 | 
             
                      air_loop_info[:cooling_coils][:dx_two_speed] << coil
         | 
| 845 845 | 
             
                      two_speed = supply_comp.to_CoilCoolingDXTwoSpeed.get
         | 
| 846 846 | 
             
                      coil[:name] = two_speed.name.get
         | 
| 847 | 
            -
                      coil[:cop_low] = two_speed.ratedLowSpeedCOP. | 
| 848 | 
            -
                      coil[:cop_high] = two_speed.ratedHighSpeedCOP. | 
| 847 | 
            +
                      coil[:cop_low] = two_speed.ratedLowSpeedCOP.to_f
         | 
| 848 | 
            +
                      coil[:cop_high] = two_speed.ratedHighSpeedCOP.to_f
         | 
| 849 849 | 
             
                      coil[:nominal_total_capacity_w] = model.sqlFile.get.execAndReturnFirstDouble("SELECT Value FROM TabularDataWithStrings WHERE ReportName='EquipmentSummary' AND ReportForString='Entire Facility' AND TableName='Cooling Coils' AND ColumnName='Nominal Total Capacity' AND RowName='#{coil[:name].upcase}' ")
         | 
| 850 850 | 
             
                      coil[:nominal_total_capacity_w] = validate_optional(coil[:nominal_total_capacity_w], model, -1.0)
         | 
| 851 851 | 
             
                    end
         | 
| @@ -1712,7 +1712,7 @@ class NECB2011 | |
| 1712 1712 | 
             
              # This method will run the HRV compliance for a single air loop
         | 
| 1713 1713 | 
             
              #
         | 
| 1714 1714 | 
             
              # @param qaqc [:hash] Hash that contains the base data with qaqc keys
         | 
| 1715 | 
            -
              # @param model [:OS:Model]  | 
| 1715 | 
            +
              # @param model [:OS:Model] OpenStudio Model
         | 
| 1716 1716 | 
             
              # @param  air_loop_info [:hash]  single air_loop object from the qaqc hash
         | 
| 1717 1717 | 
             
              def necb_hrv_compliance_for_single_airloop(qaqc, model, air_loop_info)
         | 
| 1718 1718 | 
             
                # HRV check
         | 
| @@ -222,7 +222,7 @@ class NECB2011 | |
| 222 222 |  | 
| 223 223 | 
             
                # Append the name with standards information
         | 
| 224 224 | 
             
                water_heater_mixed.setName("#{water_heater_mixed.name} #{water_heater_eff.round(3)} Therm Eff")
         | 
| 225 | 
            -
                OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.WaterHeaterMixed', "For #{template}: #{water_heater_mixed.name}; thermal efficiency = #{water_heater_eff.round(3)}, skin-loss UA = #{ua_btu_per_hr_per_f.round}Btu/hr")
         | 
| 225 | 
            +
                OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.WaterHeaterMixed', "For #{template}: #{water_heater_mixed.name}; thermal efficiency = #{water_heater_eff.round(3)}, skin-loss UA = #{ua_btu_per_hr_per_f.round}Btu/hr-R")
         | 
| 226 226 | 
             
                return true
         | 
| 227 227 | 
             
              end
         | 
| 228 228 |  | 
| @@ -153,7 +153,7 @@ class NECB2020 | |
| 153 153 |  | 
| 154 154 | 
             
                # Append the name with standards information
         | 
| 155 155 | 
             
                water_heater_mixed.setName("#{water_heater_mixed.name} #{water_heater_eff.round(3)} Therm Eff")
         | 
| 156 | 
            -
                OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.WaterHeaterMixed', "For #{template}: #{water_heater_mixed.name}; thermal efficiency = #{water_heater_eff.round(3)}, skin-loss UA = #{ua_btu_per_hr_per_f.round}Btu/hr")
         | 
| 156 | 
            +
                OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.WaterHeaterMixed', "For #{template}: #{water_heater_mixed.name}; thermal efficiency = #{water_heater_eff.round(3)}, skin-loss UA = #{ua_btu_per_hr_per_f.round}Btu/hr-R")
         | 
| 157 157 | 
             
                return true
         | 
| 158 158 | 
             
              end
         | 
| 159 159 | 
             
            end
         | 
| @@ -98,6 +98,11 @@ class Standard | |
| 98 98 | 
             
                  weather_dir = File.expand_path(File.join(Dir.pwd, 'extracted_files/weather/'))
         | 
| 99 99 | 
             
                  OpenStudio.logFree(OpenStudio::Info, 'openstudio.weather.Model', "Extracting weather files from OpenStudio CLI to #{weather_dir}")
         | 
| 100 100 | 
             
                  FileUtils.mkdir_p(weather_dir)
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  path_length = "#{weather_dir}/#{weather_file_name}".length
         | 
| 103 | 
            +
                  if path_length > 260
         | 
| 104 | 
            +
                    OpenStudio.logFree(OpenStudio::Warn, 'openstudio.weather.Model', "Weather file path length #{path_length} is >260 characters and may cause issues in Windows environments.")
         | 
| 105 | 
            +
                  end
         | 
| 101 106 | 
             
                  File.open("#{weather_dir}/#{weather_file_name}", 'wb') { |f| f << epw_string; f.flush }
         | 
| 102 107 | 
             
                  File.open("#{weather_dir}/#{weather_file_name.gsub('.epw', '.ddy')}", 'wb') { |f| f << ddy_string; f.flush }
         | 
| 103 108 | 
             
                  File.open("#{weather_dir}/#{weather_file_name.gsub('.epw', '.stat')}", 'wb') { |f| f << stat_string; f.flush }
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: openstudio-standards
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Andrew Parker
         | 
| @@ -28,7 +28,7 @@ authors: | |
| 28 28 | 
             
            autorequire:
         | 
| 29 29 | 
             
            bindir: bin
         | 
| 30 30 | 
             
            cert_chain: []
         | 
| 31 | 
            -
            date: 2022- | 
| 31 | 
            +
            date: 2022-11-03 00:00:00.000000000 Z
         | 
| 32 32 | 
             
            dependencies:
         | 
| 33 33 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 34 34 | 
             
              name: minitest-reporters
         | 
| @@ -653,6 +653,7 @@ files: | |
| 653 653 | 
             
            - data/geometry/DOERefSmallOffice.json
         | 
| 654 654 | 
             
            - data/geometry/DOERefWarehouse.json
         | 
| 655 655 | 
             
            - data/geometry/DOERefWarehouse.osm
         | 
| 656 | 
            +
            - data/standards/OpenStudio_Standards-ashrae_90_1.xlsx
         | 
| 656 657 | 
             
            - data/standards/exclude_list.csv
         | 
| 657 658 | 
             
            - data/standards/export_OpenStudio_libraries.rb
         | 
| 658 659 | 
             
            - data/standards/legacy_dd_results.csv
         | 
| @@ -661,6 +662,7 @@ files: | |
| 661 662 | 
             
            - data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1-ALL-comstockspace_types.csv
         | 
| 662 663 | 
             
            - data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1.csv
         | 
| 663 664 | 
             
            - data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1space_types.csv
         | 
| 665 | 
            +
            - data/standards/openstudio_standards_duplicates_log.csv
         | 
| 664 666 | 
             
            - data/standards/templates_to_climate_zones.json
         | 
| 665 667 | 
             
            - data/standards/test_performance_expected_dd_results.csv
         | 
| 666 668 | 
             
            - data/weather/ALTURAS_725958_CZ2010.ddy
         |