openstudio-standards 0.2.14 → 0.2.15.pre.rc1
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/geometry/ASHRAECollege.json +0 -19
- data/data/geometry/ASHRAEMidriseApartment.json +47 -47
- data/data/geometry/ASHRAESecondarySchool.osm +2 -2
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/export_OpenStudio_libraries.rb +1 -1
- data/data/standards/manage_OpenStudio_Standards.rb +43 -87
- data/data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1.csv +9 -0
- data/data/standards/openstudio_standards_duplicates_log.csv +142 -27
- data/data/standards/test_performance_expected_dd_results.csv +2016 -2016
- data/data/weather/CAN_NU_Iqaluit.AP.719090_CWEC2016.ddy +2316 -0
- data/data/weather/CAN_NU_Iqaluit.AP.719090_CWEC2016.epw +8768 -0
- data/data/weather/CAN_NU_Iqaluit.AP.719090_CWEC2016.stat +697 -0
- data/lib/openstudio-standards/btap/WeatherData1.json +54 -0
- data/lib/openstudio-standards/btap/WeatherData1.xlsx +0 -0
- data/lib/openstudio-standards/btap/btap_result.rb +12 -10
- data/lib/openstudio-standards/btap/envelope.rb +2 -2
- data/lib/openstudio-standards/btap/geometry.rb +96 -49
- data/lib/openstudio-standards/{utilities → btap/utilities}/Add_template_field_to_json.rb +0 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/convert_surfaces_to_adiabatic_necb_8426.rb +0 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/generate_space_types.rb +0 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/necb_to_epw_map.rb +0 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/os_sim_extract.rb +0 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/rename_surfaces.rb +0 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/round_surf_coords.rb +0 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/sched_create.rb +0 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/set_mult_to_adiabatic.rb +0 -0
- data/lib/openstudio-standards/btap/utilities/space_type.rb +78 -0
- data/lib/openstudio-standards/{utilities → btap/utilities}/weatherData1_xlsx_to_json.rb +0 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.AirConditionerVariableRefrigerantFlow.rb +1 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.HVACComponent.rb +1 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +20 -6
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +6 -6
- data/lib/openstudio-standards/hvac_sizing/Siz.WaterHeaterMixed.rb +2 -2
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +6 -7
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanConstantVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanOnOff.rb +5 -5
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanVariableVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +6 -7
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.FanConstantVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.FanOnOff.rb +5 -5
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.FanVariableVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.elevators.rb +6 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +10 -9
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +9 -11
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.FanConstantVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.FanOnOff.rb +5 -5
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.FanVariableVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.elevators.rb +11 -7
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +17 -16
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +9 -11
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.hvac_systems.rb +4 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanConstantVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanOnOff.rb +5 -5
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanVariableVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.elevators.rb +11 -7
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +23 -22
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +9 -10
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +4 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanConstantVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanOnOff.rb +5 -5
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanVariableVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.elevators.rb +11 -7
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +23 -22
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +89 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +9 -10
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +76 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +22 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.elevators.rb +11 -11
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.refrigeration.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.CoilHeatingGas.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.elevators.rb +11 -11
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.refrigeration.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.FanConstantVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.FanOnOff.rb +5 -5
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.FanVariableVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.HeatExchangerAirToAirSensibleAndLatent.rb +2 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.elevators.rb +11 -7
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +10 -10
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.hvac_systems.rb +4 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanConstantVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanOnOff.rb +5 -5
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanVariableVolume.rb +5 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerAirToAirSensibleAndLatent.rb +2 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.elevators.rb +11 -7
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +10 -10
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.hvac_systems.rb +4 -2
- data/lib/openstudio-standards/prototypes/cbes/cbes.Model.elevators.rb +3 -6
- data/lib/openstudio-standards/prototypes/cbes/cbes.refrigeration.rb +5 -4
- data/lib/openstudio-standards/prototypes/cbes/cbes_t24_2008/cbes_t24_2008.FanConstantVolume.rb +5 -3
- data/lib/openstudio-standards/prototypes/cbes/cbes_t24_2008/cbes_t24_2008.FanOnOff.rb +5 -4
- data/lib/openstudio-standards/prototypes/cbes/cbes_t24_2008/cbes_t24_2008.FanVariableVolume.rb +5 -3
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +65 -30
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +54 -23
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +135 -147
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +42 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +85 -12
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +42 -30
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +39 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +39 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +60 -12
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +33 -265
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +41 -3
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +69 -297
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +68 -25
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +88 -59
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +88 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +48 -10
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +130 -145
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +29 -101
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +24 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +48 -589
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +38 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +38 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +40 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +85 -171
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +87 -44
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +46 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +105 -17
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +97 -15
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +26 -167
- data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +3828 -1131
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +3 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +2 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +2 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +2 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +4 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +3 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +4 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +3 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +9 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +3 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +9 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +4 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +3 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +4 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +23 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +29 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +29 -5
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +43 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +22 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +46 -3
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.elevators.rb +27 -22
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +15 -8
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +22 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +429 -59
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +18 -11
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +11 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +1 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +8 -10
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +37 -28
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +24 -6
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +251 -65
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +46 -31
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +62 -10
- data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +76 -33
- data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +445 -275
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +26 -21
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +5 -2
- data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +7 -9
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +8 -2
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +10 -6
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +5 -1
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +6 -1
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +45 -4
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +18 -8
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +9 -7
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +8 -4
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +86 -3
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +5 -2
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +6 -2
- data/lib/openstudio-standards/standards/Standards.Construction.rb +66 -35
- data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +7 -7
- data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.Fan.rb +53 -35
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +22 -16
- data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +77 -19
- data/lib/openstudio-standards/standards/Standards.Model.rb +387 -245
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +13 -15
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +94 -48
- data/lib/openstudio-standards/standards/Standards.Pump.rb +28 -20
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +3 -4
- data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +2 -0
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +34 -24
- data/lib/openstudio-standards/standards/Standards.Space.rb +179 -116
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +23 -12
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +55 -25
- data/lib/openstudio-standards/standards/Standards.Surface.rb +57 -32
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +157 -107
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +9 -6
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +52 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1.Standards.FanVariableVolume.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +28 -18
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/comstock_ashrae_90_1_2004.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +696 -2938
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ext_ltg.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.spc_typ.json +123 -123
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.furnaces.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +11 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_system.json +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +395 -384
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +69 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirLoopHVAC.rb +20 -13
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/comstock_ashrae_90_1_2007.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +696 -2938
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ext_ltg.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +122 -122
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.furnaces.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +11 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_system.json +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +413 -401
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +69 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +42 -53
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +3 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.CoolingTower.rb +5 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +6 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/comstock_ashrae_90_1_2010.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +696 -2938
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ext_ltg.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +129 -129
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +210 -42
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.furnaces.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +11 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_system.json +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +460 -320
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +69 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +45 -51
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +3 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTower.rb +5 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTowerVariableSpeed.rb +2 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.FanVariableVolume.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +8 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ThermalZone.rb +2 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ZoneHVACComponent.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/comstock_ashrae_90_1_2013.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +696 -2938
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ext_ltg.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +121 -121
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +420 -84
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.furnaces.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +12 -12
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_system.json +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +475 -335
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +69 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +40 -50
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +3 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTower.rb +5 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +2 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanVariableVolume.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +8 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ThermalZone.rb +2 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/comstock_ashrae_90_1_2016.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/ashrae_90_1.schedules.json +696 -2938
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ext_ltg.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +152 -128
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +488 -84
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.furnaces.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +47 -47
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +69 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +342 -56
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +3 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTower.rb +5 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +2 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanVariableVolume.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +25 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ThermalZone.rb +2 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +30 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/comstock_ashrae_90_1_2019.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/ashrae_90_1.schedules.json +696 -2938
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ext_ltg.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +151 -127
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.boilers.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +2307 -101
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.furnaces.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_compressors.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +47 -47
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +69 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +25 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +286 -224
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/comstock_doe_ref_1980_2004.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +696 -2938
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ext_ltg.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +126 -126
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.furnaces.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.prototype_inputs.json +11 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.refrigeration_system.json +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +405 -393
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +15 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.PlantLoop.rb +3 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/comstock_doe_ref_pre_1980.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +696 -2938
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +121 -121
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.furnaces.json +37 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.prototype_inputs.json +11 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.refrigeration_system.json +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +403 -391
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +15 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.PlantLoop.rb +3 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.furnaces.json +15 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +64 -42
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +3 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTower.rb +5 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTowerVariableSpeed.rb +2 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.FanVariableVolume.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +4 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +5 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.ZoneHVACComponent.rb +3 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.rb +4 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.furnaces.json +15 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +61 -36
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +3 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTower.rb +5 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +2 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanVariableVolume.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +4 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +6 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.ZoneHVACComponent.rb +3 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.rb +4 -0
- data/lib/openstudio-standards/standards/cbes/cbes.AirLoopHVAC.rb +20 -14
- data/lib/openstudio-standards/standards/cbes/cbes.PlantLoop.rb +3 -0
- data/lib/openstudio-standards/standards/cbes/cbes.rb +4 -0
- data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/cbes_pre_1978.rb +4 -0
- data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/cbes_t24_1978.rb +4 -0
- data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/cbes_t24_1992.rb +4 -0
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/cbes_t24_2001.rb +4 -0
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.rb +4 -0
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +10 -5
- data/lib/openstudio-standards/standards/deer/deer.PlanarSurface.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/comstock_deer_1985.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_1985/deer_1985.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/comstock_deer_1996.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_1996/deer_1996.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/comstock_deer_2003.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/comstock_deer_2007.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/comstock_deer_2011.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/comstock_deer_2014.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/comstock_deer_2015.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/comstock_deer_2017.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/comstock_deer_2020.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/comstock_deer_2025.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/comstock_deer_2030.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/comstock_deer_2035.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/comstock_deer_2040.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/comstock_deer_2045.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/comstock_deer_2050.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/comstock_deer_2055.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/comstock_deer_2060.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/comstock_deer_2065.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/comstock_deer_2070.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/comstock_deer_2075.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +9 -5
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +3 -0
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +5 -3
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/comstock_deer_pre_1975.rb +4 -0
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.ext_ltg.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/deer_pre_1975.rb +4 -0
- data/lib/openstudio-standards/standards/icc_iecc/icc_iecc_2015/icc_iecc_2015.rb +4 -0
- data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/btap_1980to2010.rb +6 -28
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +25 -110
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +45 -60
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +19 -23
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +84 -83
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +52 -47
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +43 -40
- data/lib/openstudio-standards/standards/necb/ECMS/data/boiler_set.json +18 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/chiller_set.json +211 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +1195 -20
- data/lib/openstudio-standards/standards/necb/ECMS/data/furnace_set.json +18 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps.json +244 -182
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps_heating.json +232 -185
- data/lib/openstudio-standards/standards/necb/ECMS/data/shw_set.json +20 -2
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +18 -25
- data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +12 -13
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +1647 -466
- data/lib/openstudio-standards/standards/necb/ECMS/loads.rb +93 -0
- data/lib/openstudio-standards/standards/necb/ECMS/nv.rb +40 -47
- data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +26 -25
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +303 -305
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +45 -45
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +90 -120
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Hospital.osm +1176 -1115
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LowriseApartment.osm +8279 -28923
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +1173 -1173
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +15 -13
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +32 -29
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +25 -26
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +14 -14
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +24 -29
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +85 -84
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +41 -42
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +209 -197
- data/lib/openstudio-standards/standards/necb/NECB2011/lighting.rb +87 -82
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +510 -406
- data/lib/openstudio-standards/standards/necb/NECB2011/nv.md +3 -3
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +686 -683
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +129 -82
- data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +1608 -1608
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +25 -18
- data/lib/openstudio-standards/standards/necb/NECB2015/lighting.rb +73 -67
- data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +18 -22
- data/lib/openstudio-standards/standards/necb/NECB2015/qaqc/necb_2015_qaqc.rb +59 -63
- data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +1608 -1608
- data/lib/openstudio-standards/standards/necb/NECB2017/hvac_systems.rb +1 -4
- data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +10 -14
- data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +779 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/boilers.json +122 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +335 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/constants.json +13 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/furnaces.json +41 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps.json +452 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +164 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_rejection.json +228 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/led_lighting_data.json +2883 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +25851 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/surface_thermal_transmittance.json +60 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +585 -0
- data/lib/openstudio-standards/standards/necb/NECB2020/necb_2020.rb +175 -0
- data/lib/openstudio-standards/standards/necb/common/bc_step_code_indicators.md +10 -0
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +1963 -0
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +410 -0
- data/lib/openstudio-standards/standards/necb/common/neb_end_use_prices.csv +42 -0
- data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +28705 -0
- data/lib/openstudio-standards/standards/necb/common/phius.md +23 -0
- data/lib/openstudio-standards/standards/necb/common/space_type_upgrade_map.json +1158 -386
- data/lib/openstudio-standards/standards/oeesc/oeesc_2014/oeesc_2014.rb +4 -0
- data/lib/openstudio-standards/standards/standard.rb +2 -1
- data/lib/openstudio-standards/utilities/define_thermal_zone_and_mulitpliers.rb +1 -1
- data/lib/openstudio-standards/utilities/logging.rb +6 -0
- data/lib/openstudio-standards/utilities/simulation.rb +30 -14
- data/lib/openstudio-standards/utilities/{speacetype_map_converter.rb → spacetype_map_converter.rb} +0 -0
- data/lib/openstudio-standards/utilities/sqlfile.rb +112 -71
- data/lib/openstudio-standards/version.rb +2 -2
- data/lib/openstudio-standards/weather/Weather.Model.rb +209 -9
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +1 -1
- data/lib/openstudio-standards.rb +9 -0
- metadata +106 -205
- data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.boilers.json +0 -49
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.chillers.json +0 -293
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +0 -25426
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_sets.json +0 -1600
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +0 -564
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.elevators.json +0 -349
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +0 -164
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ground_temperatures.json +0 -10663
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps.json +0 -508
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +0 -156
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_rejection.json +0 -44
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +0 -184
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +0 -3094
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_cases.json +0 -829
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_lnup.json +0 -562
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_compressors.json +0 -52
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_condenser.json +0 -220
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_system.json +0 -156
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_walkins.json +0 -1316
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +0 -21446
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +0 -554
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_heaters.json +0 -68
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_source_heat_pumps.json +0 -28
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_source_heat_pumps_heating.json +0 -12
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.boilers.json +0 -49
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.chillers.json +0 -293
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +0 -12487
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_sets.json +0 -1600
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +0 -564
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.elevators.json +0 -349
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +0 -164
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ground_temperatures.json +0 -10663
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps.json +0 -466
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +0 -137
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_rejection.json +0 -44
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +0 -184
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +0 -3094
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_cases.json +0 -829
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_lnup.json +0 -562
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_compressors.json +0 -52
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_condenser.json +0 -220
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_system.json +0 -156
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_walkins.json +0 -1316
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +0 -21380
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +0 -554
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_heaters.json +0 -68
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_source_heat_pumps.json +0 -28
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_source_heat_pumps_heating.json +0 -12
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.boilers.json +0 -49
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.chillers.json +0 -395
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +0 -12487
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_sets.json +0 -1600
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +0 -592
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.elevators.json +0 -349
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +0 -550
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +0 -164
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ground_temperatures.json +0 -10663
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps.json +0 -466
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +0 -137
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_rejection.json +0 -44
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +0 -238
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +0 -3094
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_cases.json +0 -829
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_lnup.json +0 -562
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_compressors.json +0 -52
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_condenser.json +0 -220
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_system.json +0 -156
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_walkins.json +0 -1316
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +0 -21548
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +0 -554
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_heaters.json +0 -68
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_source_heat_pumps.json +0 -28
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_source_heat_pumps_heating.json +0 -12
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.boilers.json +0 -64
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.chillers.json +0 -871
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +0 -12487
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_sets.json +0 -1600
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +0 -592
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.elevators.json +0 -349
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +0 -1096
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +0 -164
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ground_temperatures.json +0 -10663
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps.json +0 -886
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +0 -194
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_rejection.json +0 -44
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +0 -247
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +0 -3094
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_cases.json +0 -829
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_lnup.json +0 -562
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_compressors.json +0 -52
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_condenser.json +0 -220
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_system.json +0 -156
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_walkins.json +0 -1316
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +0 -22079
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +0 -994
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_heaters.json +0 -68
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps.json +0 -28
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps_heating.json +0 -12
- data/lib/openstudio-standards/utilities/convert_costing_constructions.rb +0 -105
|
@@ -4,6 +4,9 @@ class Standard
|
|
|
4
4
|
attr_accessor :space_multiplier_map
|
|
5
5
|
attr_accessor :standards_data
|
|
6
6
|
|
|
7
|
+
# returns the space multiplier map
|
|
8
|
+
|
|
9
|
+
# @return [Hash] space multiplier map
|
|
7
10
|
def define_space_multiplier
|
|
8
11
|
return @space_multiplier_map
|
|
9
12
|
end
|
|
@@ -12,12 +15,13 @@ class Standard
|
|
|
12
15
|
|
|
13
16
|
# Creates a Performance Rating Method (aka Appendix G aka LEED) baseline building model
|
|
14
17
|
# based on the inputs currently in the model.
|
|
15
|
-
# the current model with this model.
|
|
16
18
|
#
|
|
17
19
|
# @note Per 90.1, the Performance Rating Method "does NOT offer an alternative compliance path for minimum standard compliance."
|
|
18
|
-
#
|
|
20
|
+
# This means you can't use this method for code compliance to get a permit.
|
|
21
|
+
#
|
|
22
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
19
23
|
# @param building_type [String] the building type
|
|
20
|
-
# @param climate_zone [String]
|
|
24
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
21
25
|
# @param custom [String] the custom logic that will be applied during baseline creation. Valid choices are 'Xcel Energy CO EDA' or '90.1-2007 with addenda dn'.
|
|
22
26
|
# If nothing is specified, no custom logic will be applied; the process will follow the template logic explicitly.
|
|
23
27
|
# @param sizing_run_dir [String] the directory where the sizing runs will be performed
|
|
@@ -221,7 +225,7 @@ class Standard
|
|
|
221
225
|
# Delete all the unused resource objects
|
|
222
226
|
model_remove_unused_resource_objects(model)
|
|
223
227
|
|
|
224
|
-
#
|
|
228
|
+
# @todo turn off self shading
|
|
225
229
|
# Set Solar Distribution to MinimalShadowing... problem is when you also have detached shading such as surrounding buildings etc
|
|
226
230
|
# It won't be taken into account, while it should: only self shading from the building itself should be turned off but to my knowledge there isn't a way to do this in E+
|
|
227
231
|
|
|
@@ -240,6 +244,9 @@ class Standard
|
|
|
240
244
|
# Determine if there needs to be a sizing run after constructions are added
|
|
241
245
|
# so that EnergyPlus can calculate the VLTs of layer-by-layer glazing constructions.
|
|
242
246
|
# These VLT values are needed for the daylighting controls logic for some templates.
|
|
247
|
+
#
|
|
248
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
249
|
+
# @return [Bool] returns true if required, false if not
|
|
243
250
|
def model_create_prm_baseline_building_requires_vlt_sizing_run(model)
|
|
244
251
|
return false # Not required for most templates
|
|
245
252
|
end
|
|
@@ -247,6 +254,7 @@ class Standard
|
|
|
247
254
|
# Determine the residential and nonresidential floor areas based on the space type properties for each space.
|
|
248
255
|
# For spaces with no space type, assume nonresidential.
|
|
249
256
|
#
|
|
257
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
250
258
|
# @return [Hash] keys are 'residential' and 'nonresidential', units are m^2
|
|
251
259
|
def model_residential_and_nonresidential_floor_areas(model)
|
|
252
260
|
res_area_m2 = 0
|
|
@@ -263,10 +271,11 @@ class Standard
|
|
|
263
271
|
end
|
|
264
272
|
|
|
265
273
|
# Determine the number of stories spanned by the supplied zones.
|
|
266
|
-
# If all zones on one of the stories have an
|
|
274
|
+
# If all zones on one of the stories have an identical multiplier,
|
|
267
275
|
# assume that the multiplier is a floor multiplier and increase the number of stories accordingly.
|
|
268
276
|
# Stories do not have to be contiguous.
|
|
269
277
|
#
|
|
278
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
270
279
|
# @param zones [Array<OpenStudio::Model::ThermalZone>] an array of zones
|
|
271
280
|
# @return [Integer] the number of stories spanned
|
|
272
281
|
def model_num_stories_spanned(model, zones)
|
|
@@ -295,7 +304,10 @@ class Standard
|
|
|
295
304
|
|
|
296
305
|
# Categorize zones by occupancy type and fuel type, where the types depend on the standard.
|
|
297
306
|
#
|
|
298
|
-
# @
|
|
307
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
308
|
+
# @param custom [String] custom fuel type
|
|
309
|
+
# @return [Array<Hash>] an array of hashes, one for each zone,
|
|
310
|
+
# with the keys 'zone', 'type' (occ type), 'fuel', and 'area'
|
|
299
311
|
def model_zones_with_occ_and_fuel_type(model, custom)
|
|
300
312
|
zones = []
|
|
301
313
|
|
|
@@ -337,11 +349,12 @@ class Standard
|
|
|
337
349
|
return zones
|
|
338
350
|
end
|
|
339
351
|
|
|
340
|
-
# Determine the dominant and exceptional areas of the
|
|
341
|
-
# building based on fuel types and occupancy types.
|
|
352
|
+
# Determine the dominant and exceptional areas of the building based on fuel types and occupancy types.
|
|
342
353
|
#
|
|
354
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
355
|
+
# @param custom [String] custom fuel type
|
|
343
356
|
# @return [Array<Hash>] an array of hashes of area information,
|
|
344
|
-
#
|
|
357
|
+
# with keys area_ft2, type, fuel, and zones (an array of zones)
|
|
345
358
|
def model_prm_baseline_system_groups(model, custom)
|
|
346
359
|
# Define the minimum area for the
|
|
347
360
|
# exception that allows a different
|
|
@@ -534,7 +547,7 @@ class Standard
|
|
|
534
547
|
gp['zones'] = gp_zns
|
|
535
548
|
end
|
|
536
549
|
|
|
537
|
-
#
|
|
550
|
+
# @todo Remove the secondary zones before
|
|
538
551
|
# determining the area used to pick the HVAC system, per PNNL PRM RM
|
|
539
552
|
|
|
540
553
|
# If there is any district heating or district cooling in the proposed building, the heating and cooling
|
|
@@ -600,6 +613,9 @@ class Standard
|
|
|
600
613
|
|
|
601
614
|
# Determines the area of the building above which point
|
|
602
615
|
# the non-dominant area type gets it's own HVAC system type.
|
|
616
|
+
#
|
|
617
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
618
|
+
# @param custom [String] custom fuel type
|
|
603
619
|
# @return [Double] the minimum area (m^2)
|
|
604
620
|
def model_prm_baseline_system_group_minimum_area(model, custom)
|
|
605
621
|
exception_min_area_ft2 = 20_000
|
|
@@ -610,14 +626,18 @@ class Standard
|
|
|
610
626
|
# Determine the baseline system type given the inputs. Logic is different for different standards.
|
|
611
627
|
#
|
|
612
628
|
# 90.1-2007, 90.1-2010, 90.1-2013
|
|
629
|
+
#
|
|
630
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
631
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
613
632
|
# @param area_type [String] Valid choices are residential, nonresidential, and heatedonly
|
|
614
633
|
# @param fuel_type [String] Valid choices are electric, fossil, fossilandelectric,
|
|
615
634
|
# purchasedheat, purchasedcooling, purchasedheatandcooling
|
|
616
635
|
# @param area_ft2 [Double] Area in ft^2
|
|
617
636
|
# @param num_stories [Integer] Number of stories
|
|
637
|
+
# @param custom [String] custom fuel type
|
|
618
638
|
# @return [String] The system type. Possibilities are PTHP, PTAC, PSZ_AC, PSZ_HP, PVAV_Reheat, PVAV_PFP_Boxes,
|
|
619
639
|
# VAV_Reheat, VAV_PFP_Boxes, Gas_Furnace, Electric_Furnace
|
|
620
|
-
#
|
|
640
|
+
# @todo add 90.1-2013 systems 11-13
|
|
621
641
|
def model_prm_baseline_system_type(model, climate_zone, area_type, fuel_type, area_ft2, num_stories, custom)
|
|
622
642
|
# [type, central_heating_fuel, zone_heating_fuel, cooling_fuel]
|
|
623
643
|
system_type = [nil, nil, nil, nil]
|
|
@@ -681,6 +701,15 @@ class Standard
|
|
|
681
701
|
end
|
|
682
702
|
|
|
683
703
|
# Determines which system number is used for the baseline system. Default is 90.1-2004 approach.
|
|
704
|
+
#
|
|
705
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
706
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
707
|
+
# @param area_type [String] Valid choices are residential, nonresidential, and heatedonly
|
|
708
|
+
# @param fuel_type [String] Valid choices are electric, fossil, fossilandelectric,
|
|
709
|
+
# purchasedheat, purchasedcooling, purchasedheatandcooling
|
|
710
|
+
# @param area_ft2 [Double] Area in ft^2
|
|
711
|
+
# @param num_stories [Integer] Number of stories
|
|
712
|
+
# @param custom [String] custom fuel type
|
|
684
713
|
# @return [String] the system number: 1_or_2, 3_or_4, 5_or_6, 7_or_8, 9_or_10
|
|
685
714
|
def model_prm_baseline_system_number(model, climate_zone, area_type, fuel_type, area_ft2, num_stories, custom)
|
|
686
715
|
sys_num = nil
|
|
@@ -712,6 +741,12 @@ class Standard
|
|
|
712
741
|
end
|
|
713
742
|
|
|
714
743
|
# Change the fuel type based on climate zone, depending on the standard. Defaults to no change.
|
|
744
|
+
#
|
|
745
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
746
|
+
# @param fuel_type [String] Valid choices are electric, fossil, fossilandelectric,
|
|
747
|
+
# purchasedheat, purchasedcooling, purchasedheatandcooling
|
|
748
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
749
|
+
# @param custom [String] custom fuel type
|
|
715
750
|
# @return [String] the revised fuel type
|
|
716
751
|
def model_prm_baseline_system_change_fuel_type(model, fuel_type, climate_zone, custom = nil)
|
|
717
752
|
return fuel_type # Don't change fuel type for most templates
|
|
@@ -721,13 +756,16 @@ class Standard
|
|
|
721
756
|
# For some multi-zone system types, the standards require identifying zones whose loads or schedules
|
|
722
757
|
# are outliers and putting these systems on separate single-zone systems. This method does that.
|
|
723
758
|
#
|
|
759
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
724
760
|
# @param system_type [String] The system type. Valid choices are PTHP, PTAC, PSZ_AC, PSZ_HP, PVAV_Reheat,
|
|
725
761
|
# PVAV_PFP_Boxes, VAV_Reheat, VAV_PFP_Boxes, Gas_Furnace, Electric_Furnace,
|
|
726
762
|
# which are also returned by the method OpenStudio::Model::Model.prm_baseline_system_type.
|
|
727
763
|
# @param main_heat_fuel [String] main heating fuel. Valid choices are Electricity, NaturalGas, DistrictHeating
|
|
728
764
|
# @param zone_heat_fuel [String] zone heating/reheat fuel. Valid choices are Electricity, NaturalGas, DistrictHeating
|
|
729
765
|
# @param cool_fuel [String] cooling fuel. Valid choices are Electricity, DistrictCooling
|
|
730
|
-
#
|
|
766
|
+
# @param zones [Array<OpenStudio::Model::ThermalZone>] an array of zones
|
|
767
|
+
# @return [Bool] returns true if successful, false if not
|
|
768
|
+
# @todo Add 90.1-2013 systems 11-13
|
|
731
769
|
def model_add_prm_baseline_system(model, system_type, main_heat_fuel, zone_heat_fuel, cool_fuel, zones)
|
|
732
770
|
case system_type
|
|
733
771
|
when 'PTAC' # System 1
|
|
@@ -1108,6 +1146,8 @@ class Standard
|
|
|
1108
1146
|
|
|
1109
1147
|
# Determines the fan type used by VAV_Reheat and VAV_PFP_Boxes systems.
|
|
1110
1148
|
# Defaults to two speed fan.
|
|
1149
|
+
#
|
|
1150
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1111
1151
|
# @return [String] the fan type: TwoSpeed Fan, Variable Speed Fan
|
|
1112
1152
|
def model_baseline_system_vav_fan_type(model)
|
|
1113
1153
|
fan_type = 'TwoSpeed Fan'
|
|
@@ -1116,9 +1156,12 @@ class Standard
|
|
|
1116
1156
|
|
|
1117
1157
|
# Looks through the model and creates an hash of what the baseline system type should be for each zone.
|
|
1118
1158
|
#
|
|
1159
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1160
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1161
|
+
# @param custom [String] custom fuel type
|
|
1119
1162
|
# @return [Hash] keys are zones, values are system type strings
|
|
1120
|
-
#
|
|
1121
|
-
#
|
|
1163
|
+
# PTHP, PTAC, PSZ_AC, PSZ_HP, PVAV_Reheat, PVAV_PFP_Boxes,
|
|
1164
|
+
# VAV_Reheat, VAV_PFP_Boxes, Gas_Furnace, Electric_Furnace
|
|
1122
1165
|
def model_get_baseline_system_type_by_zone(model, climate_zone, custom = nil)
|
|
1123
1166
|
zone_to_sys_type = {}
|
|
1124
1167
|
|
|
@@ -1187,7 +1230,15 @@ class Standard
|
|
|
1187
1230
|
return zone_to_sys_type
|
|
1188
1231
|
end
|
|
1189
1232
|
|
|
1190
|
-
#
|
|
1233
|
+
# elimates outlier zones based on a set of keys
|
|
1234
|
+
#
|
|
1235
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1236
|
+
# @param array_of_zones [Array] an array of Hashes for each zone, with the keys 'zone'
|
|
1237
|
+
# @param key_to_inspect [String] hash key to inspect in array of zones
|
|
1238
|
+
# @param tolerance [Double] tolerance
|
|
1239
|
+
# @param field_name [String] field name to inspect
|
|
1240
|
+
# @param units [String] units
|
|
1241
|
+
# @return [Array] an array of Hashes for each zone
|
|
1191
1242
|
def model_eliminate_outlier_zones(model, array_of_zones, key_to_inspect, tolerance, field_name, units)
|
|
1192
1243
|
# Sort the zones by the desired key
|
|
1193
1244
|
begin
|
|
@@ -1264,8 +1315,10 @@ class Standard
|
|
|
1264
1315
|
# Second, eliminate zones whose design internal loads differ from the area-weighted average of all other zones
|
|
1265
1316
|
# on the system by more than 10 Btu/hr*ft^2.
|
|
1266
1317
|
#
|
|
1318
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1319
|
+
# @param zones [Array<OpenStudio::Model::ThermalZone>] an array of zones
|
|
1267
1320
|
# @return [Hash] A hash of two arrays of ThermalZones,
|
|
1268
|
-
#
|
|
1321
|
+
# where the keys are 'primary' and 'secondary'
|
|
1269
1322
|
def model_differentiate_primary_secondary_thermal_zones(model, zones)
|
|
1270
1323
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', 'Determining which zones are served by the primary vs. secondary HVAC system.')
|
|
1271
1324
|
|
|
@@ -1384,6 +1437,9 @@ class Standard
|
|
|
1384
1437
|
# Group an array of zones into multiple arrays, one for each story in the building.
|
|
1385
1438
|
# Zones with spaces on multiple stories will be assigned to only one of the stories.
|
|
1386
1439
|
# Removes empty array (when the story doesn't contain any of the zones)
|
|
1440
|
+
#
|
|
1441
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1442
|
+
# @param zones [Array<OpenStudio::Model::ThermalZone>] an array of zones
|
|
1387
1443
|
# @return [Array<Array<OpenStudio::Model::ThermalZone>>] array of arrays of zones
|
|
1388
1444
|
def model_group_zones_by_story(model, zones)
|
|
1389
1445
|
story_zone_lists = []
|
|
@@ -1428,7 +1484,8 @@ class Standard
|
|
|
1428
1484
|
# If no story object is found for a particular height, create a new one and assign it to the space.
|
|
1429
1485
|
# Does not assign a story to plenum spaces.
|
|
1430
1486
|
#
|
|
1431
|
-
# @
|
|
1487
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1488
|
+
# @return [Bool] returns true if successful, false if not
|
|
1432
1489
|
def model_assign_spaces_to_stories(model)
|
|
1433
1490
|
# Make hash of spaces and minz values
|
|
1434
1491
|
sorted_spaces = {}
|
|
@@ -1464,10 +1521,11 @@ class Standard
|
|
|
1464
1521
|
return true
|
|
1465
1522
|
end
|
|
1466
1523
|
|
|
1467
|
-
# Applies the multi-zone VAV outdoor air sizing requirements
|
|
1468
|
-
# to all applicable air loops in the model.
|
|
1469
|
-
#
|
|
1524
|
+
# Applies the multi-zone VAV outdoor air sizing requirements to all applicable air loops in the model.
|
|
1470
1525
|
# @note This must be performed before the sizing run because it impacts component sizes, which in turn impact efficiencies.
|
|
1526
|
+
#
|
|
1527
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1528
|
+
# @return [Bool] returns true if successful, false if not
|
|
1471
1529
|
def model_apply_multizone_vav_outdoor_air_sizing(model)
|
|
1472
1530
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started applying multizone vav OA sizing.')
|
|
1473
1531
|
|
|
@@ -1478,6 +1536,12 @@ class Standard
|
|
|
1478
1536
|
end
|
|
1479
1537
|
|
|
1480
1538
|
# Applies the HVAC parts of the template to all objects in the model using the the template specified in the model.
|
|
1539
|
+
#
|
|
1540
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1541
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1542
|
+
# @param apply_controls [Bool] toggle whether to apply air loop and plant loop controls
|
|
1543
|
+
# @param sql_db_vars_map [Hash] hash map
|
|
1544
|
+
# @return [Bool] returns true if successful, false if not
|
|
1481
1545
|
def model_apply_hvac_efficiency_standard(model, climate_zone, apply_controls: true, sql_db_vars_map: nil)
|
|
1482
1546
|
sql_db_vars_map = {} if sql_db_vars_map.nil?
|
|
1483
1547
|
|
|
@@ -1548,7 +1612,7 @@ class Standard
|
|
|
1548
1612
|
model.getEvaporativeFluidCoolerTwoSpeeds.sort.each { |obj| fluid_cooler_apply_minimum_power_per_flow(obj, equipment_type: 'Closed Cooling Tower') }
|
|
1549
1613
|
|
|
1550
1614
|
# ERVs
|
|
1551
|
-
model.getHeatExchangerAirToAirSensibleAndLatents.each { |obj|
|
|
1615
|
+
model.getHeatExchangerAirToAirSensibleAndLatents.each { |obj| heat_exchanger_air_to_air_sensible_and_latent_apply_effectiveness(obj) }
|
|
1552
1616
|
|
|
1553
1617
|
# Gas Heaters
|
|
1554
1618
|
model.getCoilHeatingGass.sort.each { |obj| coil_heating_gas_apply_efficiency_and_curves(obj) }
|
|
@@ -1559,6 +1623,9 @@ class Standard
|
|
|
1559
1623
|
end
|
|
1560
1624
|
|
|
1561
1625
|
# Applies daylighting controls to each space in the model per the standard.
|
|
1626
|
+
#
|
|
1627
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1628
|
+
# @return [Bool] returns true if successful, false if not
|
|
1562
1629
|
def model_add_daylighting_controls(model)
|
|
1563
1630
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started adding daylighting controls.')
|
|
1564
1631
|
|
|
@@ -1568,17 +1635,16 @@ class Standard
|
|
|
1568
1635
|
end
|
|
1569
1636
|
|
|
1570
1637
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished adding daylighting controls.')
|
|
1638
|
+
return true
|
|
1571
1639
|
end
|
|
1572
1640
|
|
|
1573
|
-
# Apply the air leakage requirements to the model,
|
|
1574
|
-
#
|
|
1575
|
-
# creates customized infiltration objects for each space
|
|
1641
|
+
# Apply the air leakage requirements to the model, as described in PNNL section 5.2.1.6.
|
|
1642
|
+
# This method creates customized infiltration objects for each space
|
|
1576
1643
|
# and removes the SpaceType-level infiltration objects.
|
|
1577
1644
|
#
|
|
1578
|
-
#
|
|
1579
|
-
# @return [Bool] true if successful, false if not
|
|
1580
|
-
# @todo This infiltration method is not used by the Reference
|
|
1581
|
-
# buildings, fix this inconsistency.
|
|
1645
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1646
|
+
# @return [Bool] returns true if successful, false if not
|
|
1647
|
+
# @todo This infiltration method is not used by the Reference buildings, fix this inconsistency.
|
|
1582
1648
|
def model_apply_infiltration_standard(model)
|
|
1583
1649
|
# Set the infiltration rate at each space
|
|
1584
1650
|
model.getSpaces.sort.each do |space|
|
|
@@ -1778,13 +1844,11 @@ class Standard
|
|
|
1778
1844
|
# needed for NRCan data structure compatibility. We keep all tables in a 'tables' hash in @standards_data and the table
|
|
1779
1845
|
# itself is in the 'table' hash index.
|
|
1780
1846
|
if hash_of_objects.nil?
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
hash_of_objects = table
|
|
1787
|
-
end
|
|
1847
|
+
# Format of @standards_data is not NRCan-style and table simply doesn't exist.
|
|
1848
|
+
return matching_objects if @standards_data['tables'].nil?
|
|
1849
|
+
|
|
1850
|
+
table = @standards_data['tables'][table_name]['table']
|
|
1851
|
+
hash_of_objects = table
|
|
1788
1852
|
end
|
|
1789
1853
|
|
|
1790
1854
|
# Compare each of the objects against the search criteria
|
|
@@ -1899,10 +1963,6 @@ class Standard
|
|
|
1899
1963
|
# the objects will only be returned if the specified capacity is between the minimum_capacity and maximum_capacity values.
|
|
1900
1964
|
# @param date [<OpenStudio::Date>] date of the object in question. If date is supplied,
|
|
1901
1965
|
# the objects will only be returned if the specified date is between the start_date and end_date.
|
|
1902
|
-
# @param area [Double] area of the object in question. If area is supplied,
|
|
1903
|
-
# the objects will only be returned if the specified area is between the minimum_area and maximum_area values.
|
|
1904
|
-
# @param num_floors [Double] capacity of the object in question. If num_floors is supplied,
|
|
1905
|
-
# the objects will only be returned if the specified num_floors is between the minimum_floors and maximum_floors values.
|
|
1906
1966
|
# @return [Hash] Return tbe first matching object hash if successful, nil if not.
|
|
1907
1967
|
# @example Find the motor that meets these size criteria
|
|
1908
1968
|
# search_criteria = {
|
|
@@ -1934,11 +1994,12 @@ class Standard
|
|
|
1934
1994
|
|
|
1935
1995
|
# Create constant ScheduleRuleset
|
|
1936
1996
|
#
|
|
1937
|
-
# @param
|
|
1938
|
-
# @param
|
|
1939
|
-
# @param
|
|
1997
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
1998
|
+
# @param value [Double] the value to use, 24-7, 365
|
|
1999
|
+
# @param name [String] the name of the schedule
|
|
2000
|
+
# @param sch_type_limit [String] the name of a schedule type limit
|
|
1940
2001
|
# options are Temperature, Humidity Ratio, Fractional, OnOff, and Activity
|
|
1941
|
-
# @return schedule
|
|
2002
|
+
# @return [OpenStudio::Model::ScheduleRuleset] schedule ruleset object
|
|
1942
2003
|
def model_add_constant_schedule_ruleset(model,
|
|
1943
2004
|
value,
|
|
1944
2005
|
name = nil,
|
|
@@ -1972,14 +2033,15 @@ class Standard
|
|
|
1972
2033
|
|
|
1973
2034
|
# Create ScheduleTypeLimits
|
|
1974
2035
|
#
|
|
1975
|
-
# @param
|
|
2036
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2037
|
+
# @param standard_sch_type_limit [String] the name of a standard schedule type limit with predefined limits
|
|
1976
2038
|
# options are Temperature, Humidity Ratio, Fractional, OnOff, and Activity
|
|
1977
|
-
# @param name[
|
|
2039
|
+
# @param name [String] the name of the schedule type limits
|
|
1978
2040
|
# @param lower_limit_value [double] the lower limit value for the schedule type
|
|
1979
2041
|
# @param upper_limit_value [double] the upper limit value for the schedule type
|
|
1980
|
-
# @param numeric_type [
|
|
1981
|
-
# @param unit_type [
|
|
1982
|
-
# @return [
|
|
2042
|
+
# @param numeric_type [String] the numeric type, options are Continuous or Discrete
|
|
2043
|
+
# @param unit_type [String] the unit type, options are defined in EnergyPlus I/O reference
|
|
2044
|
+
# @return [OpenStudio::Model::ScheduleTypeLimits] schedule type limits
|
|
1983
2045
|
def model_add_schedule_type_limits(model,
|
|
1984
2046
|
standard_sch_type_limit: nil,
|
|
1985
2047
|
name: nil,
|
|
@@ -2058,9 +2120,9 @@ class Standard
|
|
|
2058
2120
|
return schedule_type_limits
|
|
2059
2121
|
end
|
|
2060
2122
|
|
|
2061
|
-
# Create a schedule from the openstudio standards dataset and
|
|
2062
|
-
# add it to the model.
|
|
2123
|
+
# Create a schedule from the openstudio standards dataset and add it to the model.
|
|
2063
2124
|
#
|
|
2125
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2064
2126
|
# @param schedule_name [String} name of the schedule
|
|
2065
2127
|
# @return [ScheduleRuleset] the resulting schedule ruleset
|
|
2066
2128
|
# @todo make return an OptionalScheduleRuleset
|
|
@@ -2168,11 +2230,15 @@ class Standard
|
|
|
2168
2230
|
sch_rule.setApplySaturday(true) if day_types.include?('Sat')
|
|
2169
2231
|
sch_rule.setApplySunday(true) if day_types.include?('Sun')
|
|
2170
2232
|
end
|
|
2171
|
-
end
|
|
2233
|
+
end
|
|
2172
2234
|
return sch_ruleset
|
|
2173
2235
|
end
|
|
2174
2236
|
|
|
2175
2237
|
# Create a material from the openstudio standards dataset.
|
|
2238
|
+
#
|
|
2239
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2240
|
+
# @param material_name [String] name of the material
|
|
2241
|
+
# @return [OpenStudio::Model::Material] material object
|
|
2176
2242
|
# @todo make return an OptionalMaterial
|
|
2177
2243
|
def model_add_material(model, material_name)
|
|
2178
2244
|
# First check model and return material if it already exists
|
|
@@ -2189,7 +2255,8 @@ class Standard
|
|
|
2189
2255
|
data = model_find_object(standards_data['materials'], 'name' => material_name)
|
|
2190
2256
|
unless data
|
|
2191
2257
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', "Cannot find data for material: #{material_name}, will not be created.")
|
|
2192
|
-
return false
|
|
2258
|
+
return false
|
|
2259
|
+
# @todo change to return empty optional material
|
|
2193
2260
|
end
|
|
2194
2261
|
|
|
2195
2262
|
material = nil
|
|
@@ -2271,6 +2338,11 @@ class Standard
|
|
|
2271
2338
|
|
|
2272
2339
|
# Create a construction from the openstudio standards dataset.
|
|
2273
2340
|
# If construction_props are specified, modifies the insulation layer accordingly.
|
|
2341
|
+
#
|
|
2342
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2343
|
+
# @param construction_name [String] name of the construction
|
|
2344
|
+
# @param construction_props [Hash] hash of construction properties
|
|
2345
|
+
# @return [OpenStudio::Model::Construction] construction object
|
|
2274
2346
|
# @todo make return an OptionalConstruction
|
|
2275
2347
|
def model_add_construction(model, construction_name, construction_props = nil)
|
|
2276
2348
|
# First check model and return construction if it already exists
|
|
@@ -2303,7 +2375,7 @@ class Standard
|
|
|
2303
2375
|
standards_construction_type ||= ''
|
|
2304
2376
|
standards_info.setStandardsConstructionType(standards_construction_type)
|
|
2305
2377
|
|
|
2306
|
-
#
|
|
2378
|
+
# @todo could put construction rendering color in the spreadsheet
|
|
2307
2379
|
|
|
2308
2380
|
# Add the material layers to the construction
|
|
2309
2381
|
layers = OpenStudio::Model::MaterialVector.new
|
|
@@ -2345,14 +2417,14 @@ class Standard
|
|
|
2345
2417
|
elsif target_f_factor_ip && data['intended_surface_type'] == 'GroundContactFloor'
|
|
2346
2418
|
|
|
2347
2419
|
# Set the F-Factor (only applies to slabs on grade)
|
|
2348
|
-
#
|
|
2420
|
+
# @todo figure out what the prototype buildings did about ground heat transfer
|
|
2349
2421
|
# construction_set_slab_f_factor(construction, target_f_factor_ip.to_f, data['insulation_layer'])
|
|
2350
2422
|
construction_set_u_value(construction, 0.0, data['insulation_layer'], data['intended_surface_type'], u_includes_int_film, u_includes_ext_film)
|
|
2351
2423
|
|
|
2352
2424
|
elsif target_c_factor_ip && data['intended_surface_type'] == 'GroundContactWall'
|
|
2353
2425
|
|
|
2354
2426
|
# Set the C-Factor (only applies to underground walls)
|
|
2355
|
-
#
|
|
2427
|
+
# @todo figure out what the prototype buildings did about ground heat transfer
|
|
2356
2428
|
# construction_set_underground_wall_c_factor(construction, target_c_factor_ip.to_f, data['insulation_layer'])
|
|
2357
2429
|
construction_set_u_value(construction, 0.0, data['insulation_layer'], data['intended_surface_type'], u_includes_int_film, u_includes_ext_film)
|
|
2358
2430
|
|
|
@@ -2390,7 +2462,7 @@ class Standard
|
|
|
2390
2462
|
model.getSubSurfaces.each do |sub_surface|
|
|
2391
2463
|
next unless sub_surface.outsideBoundaryCondition == 'Outdoors' && sub_surface.subSurfaceType == 'Skylight'
|
|
2392
2464
|
|
|
2393
|
-
#
|
|
2465
|
+
# @todo enable proper window frame setting after https://github.com/NREL/OpenStudio/issues/2895 is fixed
|
|
2394
2466
|
sub_surface.setString(8, frame.name.get.to_s)
|
|
2395
2467
|
skylights_frame_added += 1
|
|
2396
2468
|
# if sub_surface.allowWindowPropertyFrameAndDivider
|
|
@@ -2403,7 +2475,8 @@ class Standard
|
|
|
2403
2475
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Adding #{frame.name} to #{skylights_frame_added} skylights.") if skylights_frame_added > 0
|
|
2404
2476
|
else
|
|
2405
2477
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', "Cannot find skylight framing data for: #{framing_name}, will not be created.")
|
|
2406
|
-
return false
|
|
2478
|
+
return false
|
|
2479
|
+
# @todo change to return empty optional material
|
|
2407
2480
|
end
|
|
2408
2481
|
end
|
|
2409
2482
|
|
|
@@ -2439,6 +2512,13 @@ class Standard
|
|
|
2439
2512
|
end
|
|
2440
2513
|
|
|
2441
2514
|
# Helper method to find a particular construction and add it to the model after modifying the insulation value if necessary.
|
|
2515
|
+
#
|
|
2516
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2517
|
+
# @param climate_zone_set [String] climate zone set
|
|
2518
|
+
# @param intended_surface_type [String] intended surface type
|
|
2519
|
+
# @param standards_construction_type [String] standards construction type
|
|
2520
|
+
# @param building_category [String] building category
|
|
2521
|
+
# @return [OpenStudio::Model::Construction] construction object
|
|
2442
2522
|
def model_find_and_add_construction(model, climate_zone_set, intended_surface_type, standards_construction_type, building_category)
|
|
2443
2523
|
# Get the construction properties,
|
|
2444
2524
|
# which specifies properties by construction category by climate zone set.
|
|
@@ -2459,7 +2539,7 @@ class Standard
|
|
|
2459
2539
|
almost_adiabatic = OpenStudio::Model::MasslessOpaqueMaterial.new(model, 'Smooth', 500)
|
|
2460
2540
|
construction.insertLayer(0, almost_adiabatic)
|
|
2461
2541
|
return construction
|
|
2462
|
-
|
|
2542
|
+
# else
|
|
2463
2543
|
# OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Construction properties for: #{template}-#{climate_zone_set}-#{intended_surface_type}-#{standards_construction_type}-#{building_category} = #{props}.")
|
|
2464
2544
|
end
|
|
2465
2545
|
|
|
@@ -2479,12 +2559,18 @@ class Standard
|
|
|
2479
2559
|
end
|
|
2480
2560
|
|
|
2481
2561
|
# Create a construction set from the openstudio standards dataset.
|
|
2482
|
-
#
|
|
2483
|
-
|
|
2562
|
+
#
|
|
2563
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2564
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
2565
|
+
# @param building_type [String] the building type
|
|
2566
|
+
# @param spc_type [String] the space type
|
|
2567
|
+
# @param is_residential [Bool] true if the building is residential
|
|
2568
|
+
# @return [OpenStudio::Model::OptionalDefaultConstructionSet] an optional default construction set
|
|
2569
|
+
def model_add_construction_set(model, climate_zone, building_type, spc_type, is_residential)
|
|
2484
2570
|
construction_set = OpenStudio::Model::OptionalDefaultConstructionSet.new
|
|
2485
2571
|
|
|
2486
2572
|
# Find the climate zone set that this climate zone falls into
|
|
2487
|
-
climate_zone_set = model_find_climate_zone_set(model,
|
|
2573
|
+
climate_zone_set = model_find_climate_zone_set(model, climate_zone)
|
|
2488
2574
|
unless climate_zone_set
|
|
2489
2575
|
return construction_set
|
|
2490
2576
|
end
|
|
@@ -2501,9 +2587,9 @@ class Standard
|
|
|
2501
2587
|
end
|
|
2502
2588
|
end
|
|
2503
2589
|
|
|
2504
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Adding construction set: #{template}-#{
|
|
2590
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Adding construction set: #{template}-#{climate_zone}-#{building_type}-#{spc_type}-is_residential#{is_residential}")
|
|
2505
2591
|
|
|
2506
|
-
name = model_make_name(model,
|
|
2592
|
+
name = model_make_name(model, climate_zone, building_type, spc_type)
|
|
2507
2593
|
|
|
2508
2594
|
# Create a new construction set and name it
|
|
2509
2595
|
construction_set = OpenStudio::Model::DefaultConstructionSet.new(model)
|
|
@@ -2685,8 +2771,11 @@ class Standard
|
|
|
2685
2771
|
return OpenStudio::Model::OptionalDefaultConstructionSet.new(construction_set)
|
|
2686
2772
|
end
|
|
2687
2773
|
|
|
2688
|
-
# Adds a curve from the OpenStudio-Standards dataset to the model
|
|
2689
|
-
#
|
|
2774
|
+
# Adds a curve from the OpenStudio-Standards dataset to the model based on the curve name.
|
|
2775
|
+
#
|
|
2776
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2777
|
+
# @param curve_name [String] name of the curve
|
|
2778
|
+
# @return [OpenStudio::Model::Curve] curve object, nil if not found
|
|
2690
2779
|
def model_add_curve(model, curve_name)
|
|
2691
2780
|
# First check model and return curve if it already exists
|
|
2692
2781
|
existing_curves = []
|
|
@@ -2829,7 +2918,9 @@ class Standard
|
|
|
2829
2918
|
end
|
|
2830
2919
|
|
|
2831
2920
|
# Get the full path to the weather file that is specified in the model
|
|
2832
|
-
#
|
|
2921
|
+
#
|
|
2922
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2923
|
+
# @return [OpenStudio::OptionalPath] path to weather file
|
|
2833
2924
|
def model_get_full_weather_file_path(model)
|
|
2834
2925
|
full_epw_path = OpenStudio::OptionalPath.new
|
|
2835
2926
|
|
|
@@ -2860,10 +2951,14 @@ class Standard
|
|
|
2860
2951
|
|
|
2861
2952
|
# Find the legacy simulation results from a CSV of previously created results.
|
|
2862
2953
|
#
|
|
2954
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2955
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
2956
|
+
# @param building_type [String] the building type
|
|
2957
|
+
# @param run_type [String] design day is dd-only, otherwise annual run
|
|
2863
2958
|
# @return [Hash] a hash of results for each fuel, where the keys are in the form 'End Use|Fuel Type',
|
|
2864
|
-
#
|
|
2865
|
-
# values of 0.0 if none of this end use/fuel type combo was used by the simulation.
|
|
2866
|
-
# if the legacy results couldn't be found.
|
|
2959
|
+
# e.g. Heating|Electricity, Exterior Equipment|Water. All end use/fuel type combos are present,
|
|
2960
|
+
# with values of 0.0 if none of this end use/fuel type combo was used by the simulation.
|
|
2961
|
+
# Returns nil if the legacy results couldn't be found.
|
|
2867
2962
|
def model_legacy_results_by_end_use_and_fuel_type(model, climate_zone, building_type, run_type)
|
|
2868
2963
|
# Load the legacy idf results CSV file into a ruby hash
|
|
2869
2964
|
top_dir = File.expand_path('../../..', File.dirname(__FILE__))
|
|
@@ -2905,9 +3000,11 @@ class Standard
|
|
|
2905
3000
|
|
|
2906
3001
|
# Method to gather prototype simulation results for a specific climate zone, building type, and template
|
|
2907
3002
|
#
|
|
2908
|
-
# @param
|
|
2909
|
-
# @param
|
|
2910
|
-
# @
|
|
3003
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3004
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
3005
|
+
# @param building_type [String] the building type
|
|
3006
|
+
# @return [Hash] Returns a hash with data presented in various bins.
|
|
3007
|
+
# Returns nil if no search results
|
|
2911
3008
|
def model_process_results_for_datapoint(model, climate_zone, building_type)
|
|
2912
3009
|
# Hash to store the legacy results by fuel and by end use
|
|
2913
3010
|
legacy_results_hash = {}
|
|
@@ -2979,8 +3076,10 @@ class Standard
|
|
|
2979
3076
|
# This is used to calculate EUI's to compare against non prototype buildings
|
|
2980
3077
|
# Areas taken from scorecard Excel Files
|
|
2981
3078
|
#
|
|
3079
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2982
3080
|
# @param building_type [String] the building type
|
|
2983
|
-
# @return [Double] floor area (m^2) of prototype building for building type passed in.
|
|
3081
|
+
# @return [Double] floor area (m^2) of prototype building for building type passed in.
|
|
3082
|
+
# Returns nil if unexpected building type
|
|
2984
3083
|
def model_find_prototype_floor_area(model, building_type)
|
|
2985
3084
|
if building_type == 'FullServiceRestaurant' # 5502 ft^2
|
|
2986
3085
|
result = 511
|
|
@@ -3000,7 +3099,7 @@ class Standard
|
|
|
3000
3099
|
result = 3135
|
|
3001
3100
|
elsif building_type == 'Office'
|
|
3002
3101
|
result = nil
|
|
3003
|
-
#
|
|
3102
|
+
# @todo there shouldn't be a prototype building for this
|
|
3004
3103
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', 'Measures calling this should choose between SmallOffice, MediumOffice, and LargeOffice')
|
|
3005
3104
|
elsif building_type == 'Outpatient' # 40.950 ft^2
|
|
3006
3105
|
result = 3804
|
|
@@ -3038,8 +3137,11 @@ class Standard
|
|
|
3038
3137
|
return result
|
|
3039
3138
|
end
|
|
3040
3139
|
|
|
3041
|
-
#
|
|
3042
|
-
#
|
|
3140
|
+
# This is used by other methods to get the climate zone and building type from a model.
|
|
3141
|
+
# It has logic to break office into small,
|
|
3142
|
+
# medium or large based on building area that can be turned off
|
|
3143
|
+
#
|
|
3144
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3043
3145
|
# @param remap_office [bool] re-map small office or leave it alone
|
|
3044
3146
|
# @return [hash] key for climate zone and building type, both values are strings
|
|
3045
3147
|
def model_get_building_climate_zone_and_building_type(model, remap_office = true)
|
|
@@ -3065,7 +3167,9 @@ class Standard
|
|
|
3065
3167
|
return results
|
|
3066
3168
|
end
|
|
3067
3169
|
|
|
3068
|
-
# remap office to one of the
|
|
3170
|
+
# remap office to one of the prototype buildings
|
|
3171
|
+
#
|
|
3172
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3069
3173
|
# @param floor_area [Double] floor area (m^2)
|
|
3070
3174
|
# @return [String] SmallOffice, MediumOffice, LargeOffice
|
|
3071
3175
|
def model_remap_office(model, floor_area)
|
|
@@ -3082,10 +3186,12 @@ class Standard
|
|
|
3082
3186
|
end
|
|
3083
3187
|
end
|
|
3084
3188
|
|
|
3085
|
-
#
|
|
3189
|
+
# User needs to pass in template as string.
|
|
3190
|
+
# The building type and climate zone will come from the model.
|
|
3086
3191
|
# If the building type or ASHRAE climate zone is not set in the model this will return nil
|
|
3087
3192
|
# If the lookup doesn't find matching simulation results this wil return nil
|
|
3088
3193
|
#
|
|
3194
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3089
3195
|
# @return [Double] EUI (MJ/m^2) for target template for given OSM. Returns nil if can't calculate EUI
|
|
3090
3196
|
def model_find_target_eui(model)
|
|
3091
3197
|
building_data = model_get_building_climate_zone_and_building_type(model)
|
|
@@ -3113,10 +3219,12 @@ class Standard
|
|
|
3113
3219
|
return result
|
|
3114
3220
|
end
|
|
3115
3221
|
|
|
3116
|
-
#
|
|
3222
|
+
# User needs to pass in template as string.
|
|
3223
|
+
# The building type and climate zone will come from the model.
|
|
3117
3224
|
# If the building type or ASHRAE climate zone is not set in the model this will return nil
|
|
3118
3225
|
# If the lookup doesn't find matching simulation results this wil return nil
|
|
3119
3226
|
#
|
|
3227
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3120
3228
|
# @return [Hash] EUI (MJ/m^2) This will return a hash of end uses. key is end use, value is eui
|
|
3121
3229
|
def model_find_target_eui_by_end_use(model)
|
|
3122
3230
|
building_data = model_get_building_climate_zone_and_building_type(model)
|
|
@@ -3150,41 +3258,39 @@ class Standard
|
|
|
3150
3258
|
# Get a unique list of constructions with given boundary condition and a given type of surface.
|
|
3151
3259
|
# Pulls from both default construction sets and hard-assigned constructions.
|
|
3152
3260
|
#
|
|
3153
|
-
# @param
|
|
3154
|
-
# valid choices are:
|
|
3155
|
-
#
|
|
3156
|
-
#
|
|
3157
|
-
#
|
|
3158
|
-
#
|
|
3159
|
-
# @param type [String] the type of surface to find
|
|
3160
|
-
#
|
|
3161
|
-
#
|
|
3162
|
-
#
|
|
3163
|
-
#
|
|
3164
|
-
#
|
|
3165
|
-
#
|
|
3166
|
-
#
|
|
3167
|
-
#
|
|
3168
|
-
#
|
|
3169
|
-
#
|
|
3170
|
-
#
|
|
3171
|
-
#
|
|
3172
|
-
#
|
|
3173
|
-
#
|
|
3174
|
-
#
|
|
3175
|
-
#
|
|
3176
|
-
#
|
|
3177
|
-
#
|
|
3178
|
-
#
|
|
3179
|
-
#
|
|
3180
|
-
#
|
|
3181
|
-
#
|
|
3182
|
-
#
|
|
3183
|
-
#
|
|
3184
|
-
#
|
|
3185
|
-
#
|
|
3186
|
-
# return [Array<OpenStudio::Model::ConstructionBase>]
|
|
3187
|
-
# an array of all constructions.
|
|
3261
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3262
|
+
# @param boundary_condition [String] the desired boundary condition. valid choices are:
|
|
3263
|
+
# Adiabatic
|
|
3264
|
+
# Surface
|
|
3265
|
+
# Outdoors
|
|
3266
|
+
# Ground
|
|
3267
|
+
# @param type [String] the type of surface to find. valid choices are:
|
|
3268
|
+
# AtticFloor
|
|
3269
|
+
# AtticWall
|
|
3270
|
+
# AtticRoof
|
|
3271
|
+
# DemisingFloor
|
|
3272
|
+
# DemisingWall
|
|
3273
|
+
# DemisingRoof
|
|
3274
|
+
# ExteriorFloor
|
|
3275
|
+
# ExteriorWall
|
|
3276
|
+
# ExteriorRoof
|
|
3277
|
+
# ExteriorWindow
|
|
3278
|
+
# ExteriorDoor
|
|
3279
|
+
# GlassDoor
|
|
3280
|
+
# GroundContactFloor
|
|
3281
|
+
# GroundContactWall
|
|
3282
|
+
# GroundContactRoof
|
|
3283
|
+
# InteriorFloor
|
|
3284
|
+
# InteriorWall
|
|
3285
|
+
# InteriorCeiling
|
|
3286
|
+
# InteriorPartition
|
|
3287
|
+
# InteriorWindow
|
|
3288
|
+
# InteriorDoor
|
|
3289
|
+
# OverheadDoor
|
|
3290
|
+
# Skylight
|
|
3291
|
+
# TubularDaylightDome
|
|
3292
|
+
# TubularDaylightDiffuser
|
|
3293
|
+
# return [Array<OpenStudio::Model::ConstructionBase>] an array of all constructions.
|
|
3188
3294
|
def model_find_constructions(model, boundary_condition, type)
|
|
3189
3295
|
constructions = []
|
|
3190
3296
|
|
|
@@ -3310,6 +3416,7 @@ class Standard
|
|
|
3310
3416
|
# For some standards, this will involve making modifications. For others, it will not.
|
|
3311
3417
|
#
|
|
3312
3418
|
# 90.1-2007, 90.1-2010, 90.1-2013
|
|
3419
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3313
3420
|
# @return [Bool] returns true if successful, false if not
|
|
3314
3421
|
def model_apply_prm_construction_types(model)
|
|
3315
3422
|
types_to_modify = []
|
|
@@ -3394,7 +3501,9 @@ class Standard
|
|
|
3394
3501
|
|
|
3395
3502
|
# Apply the standard construction to each surface in the model, based on the construction type currently assigned.
|
|
3396
3503
|
#
|
|
3397
|
-
# @
|
|
3504
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3505
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
3506
|
+
# @return [Bool] returns true if successful, false if not
|
|
3398
3507
|
def model_apply_standard_constructions(model, climate_zone)
|
|
3399
3508
|
types_to_modify = []
|
|
3400
3509
|
|
|
@@ -3470,11 +3579,12 @@ class Standard
|
|
|
3470
3579
|
|
|
3471
3580
|
# Returns standards data for selected construction
|
|
3472
3581
|
#
|
|
3473
|
-
# @param
|
|
3474
|
-
# @param
|
|
3475
|
-
# @param
|
|
3476
|
-
# @param
|
|
3477
|
-
# @
|
|
3582
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3583
|
+
# @param intended_surface_type [String] the surface type
|
|
3584
|
+
# @param standards_construction_type [String] the type of construction
|
|
3585
|
+
# @param building_category [String] the type of building
|
|
3586
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
3587
|
+
# @return [Hash] hash of construction properties
|
|
3478
3588
|
def model_get_construction_properties(model, intended_surface_type, standards_construction_type, building_category, climate_zone = nil)
|
|
3479
3589
|
# get climate_zone_set
|
|
3480
3590
|
climate_zone = model_get_building_climate_zone_and_building_type(model)['climate_zone'] if climate_zone.nil?
|
|
@@ -3497,9 +3607,9 @@ class Standard
|
|
|
3497
3607
|
|
|
3498
3608
|
# Returns standards data for selected construction set
|
|
3499
3609
|
#
|
|
3500
|
-
# @param
|
|
3501
|
-
# @param space_type [
|
|
3502
|
-
# @return [
|
|
3610
|
+
# @param building_type [String] the type of building
|
|
3611
|
+
# @param space_type [String] space type within the building type. Typically nil.
|
|
3612
|
+
# @return [Hash] hash of construction set data
|
|
3503
3613
|
def model_get_construction_set(building_type, space_type = nil)
|
|
3504
3614
|
# populate search hash
|
|
3505
3615
|
search_criteria = {
|
|
@@ -3518,9 +3628,12 @@ class Standard
|
|
|
3518
3628
|
# WWR reduction will be done by moving vertices inward toward centroid.
|
|
3519
3629
|
# This causes the least impact on the daylighting area calculations and controls placement.
|
|
3520
3630
|
#
|
|
3631
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3632
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
3633
|
+
# @return [Bool] returns true if successful, false if not
|
|
3521
3634
|
# @todo add proper support for 90.1-2013 with all those building type specific values
|
|
3522
3635
|
# @todo support 90.1-2004 requirement that windows be modeled as horizontal bands.
|
|
3523
|
-
#
|
|
3636
|
+
# Currently just using existing window geometry, and shrinking as necessary if WWR is above limit.
|
|
3524
3637
|
# @todo support semiheated spaces as a separate WWR category
|
|
3525
3638
|
# @todo add window frame area to calculation of WWR
|
|
3526
3639
|
def model_apply_prm_baseline_window_to_wall_ratio(model, climate_zone)
|
|
@@ -3559,7 +3672,7 @@ class Standard
|
|
|
3559
3672
|
end
|
|
3560
3673
|
|
|
3561
3674
|
# Determine the space category
|
|
3562
|
-
#
|
|
3675
|
+
# @todo This should really use the heating/cooling loads from the proposed building.
|
|
3563
3676
|
# However, in an attempt to avoid another sizing run just for this purpose,
|
|
3564
3677
|
# conditioned status is based on heating/cooling setpoints.
|
|
3565
3678
|
# If heated-only, will be assumed Semiheated.
|
|
@@ -3690,6 +3803,8 @@ class Standard
|
|
|
3690
3803
|
|
|
3691
3804
|
# Reduces the SRR to the values specified by the PRM. SRR reduction will be done by shrinking vertices toward the centroid.
|
|
3692
3805
|
#
|
|
3806
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3807
|
+
# @return [Bool] returns true if successful, false if not
|
|
3693
3808
|
# @todo support semiheated spaces as a separate SRR category
|
|
3694
3809
|
# @todo add skylight frame area to calculation of SRR
|
|
3695
3810
|
def model_apply_prm_baseline_skylight_to_roof_ratio(model)
|
|
@@ -3823,8 +3938,9 @@ class Standard
|
|
|
3823
3938
|
end
|
|
3824
3939
|
|
|
3825
3940
|
# Determines the skylight to roof ratio limit for a given standard
|
|
3826
|
-
#
|
|
3827
|
-
#
|
|
3941
|
+
#
|
|
3942
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3943
|
+
# @return [Double] the skylight to roof ratio, as a percent: 5.0 = 5%. 5% by default.
|
|
3828
3944
|
def model_prm_skylight_to_roof_ratio_limit(model)
|
|
3829
3945
|
srr_lim = 5.0
|
|
3830
3946
|
return srr_lim
|
|
@@ -3833,7 +3949,8 @@ class Standard
|
|
|
3833
3949
|
# Remove all HVAC that will be replaced during the performance rating method baseline generation.
|
|
3834
3950
|
# This does not include plant loops that serve WaterUse:Equipment or Fan:ZoneExhaust
|
|
3835
3951
|
#
|
|
3836
|
-
# @
|
|
3952
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3953
|
+
# @return [Bool] returns true if successful, false if not
|
|
3837
3954
|
def model_remove_prm_hvac(model)
|
|
3838
3955
|
# Plant loops
|
|
3839
3956
|
model.getPlantLoops.sort.each do |loop|
|
|
@@ -3863,7 +3980,8 @@ class Standard
|
|
|
3863
3980
|
|
|
3864
3981
|
# Remove EMS objects that may be orphaned from removing HVAC
|
|
3865
3982
|
#
|
|
3866
|
-
# @
|
|
3983
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3984
|
+
# @return [Bool] returns true if successful, false if not
|
|
3867
3985
|
def model_remove_prm_ems_objects(model)
|
|
3868
3986
|
model.getEnergyManagementSystemActuators.each(&:remove)
|
|
3869
3987
|
model.getEnergyManagementSystemConstructionIndexVariables.each(&:remove)
|
|
@@ -3882,7 +4000,9 @@ class Standard
|
|
|
3882
4000
|
end
|
|
3883
4001
|
|
|
3884
4002
|
# Remove external shading devices. Site shading will not be impacted.
|
|
3885
|
-
#
|
|
4003
|
+
#
|
|
4004
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4005
|
+
# @return [Bool] returns true if successful, false if not
|
|
3886
4006
|
def model_remove_external_shading_devices(model)
|
|
3887
4007
|
shading_surfaces_removed = 0
|
|
3888
4008
|
model.getShadingSurfaceGroups.sort.each do |shade_group|
|
|
@@ -3900,6 +4020,9 @@ class Standard
|
|
|
3900
4020
|
end
|
|
3901
4021
|
|
|
3902
4022
|
# Changes the sizing parameters to the PRM specifications.
|
|
4023
|
+
#
|
|
4024
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4025
|
+
# @return [Bool] returns true if successful, false if not
|
|
3903
4026
|
def model_apply_prm_sizing_parameters(model)
|
|
3904
4027
|
clg = 1.15
|
|
3905
4028
|
htg = 1.25
|
|
@@ -3909,12 +4032,13 @@ class Standard
|
|
|
3909
4032
|
sizing_params.setCoolingSizingFactor(clg)
|
|
3910
4033
|
|
|
3911
4034
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.Model', "Set sizing factors to #{htg} for heating and #{clg} for cooling.")
|
|
4035
|
+
return true
|
|
3912
4036
|
end
|
|
3913
4037
|
|
|
3914
4038
|
# Helper method to get the story object that corresponds to a specific minimum z value.
|
|
3915
4039
|
# Makes a new story if none found at this height.
|
|
3916
4040
|
#
|
|
3917
|
-
#
|
|
4041
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3918
4042
|
# @param minz [Double] the z value (height) of the desired story, in meters.
|
|
3919
4043
|
# @param tolerance [Double] tolerance for comparison, in m. Default is 0.3 m ~1ft
|
|
3920
4044
|
# @return [OpenStudio::Model::BuildingStory] the story
|
|
@@ -3942,10 +4066,11 @@ class Standard
|
|
|
3942
4066
|
# Will return an array of hashes. Many may have one array entry.
|
|
3943
4067
|
# all values other than block size are gallons.
|
|
3944
4068
|
#
|
|
4069
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
3945
4070
|
# @return [Array] array of hashes. Each array entry based on different capacity
|
|
3946
|
-
#
|
|
4071
|
+
# specific to building type. Array will be empty for some building types.
|
|
3947
4072
|
def model_find_ashrae_hot_water_demand(model)
|
|
3948
|
-
#
|
|
4073
|
+
# @todo for types not in table use standards area normalized swh values
|
|
3949
4074
|
|
|
3950
4075
|
# get building type
|
|
3951
4076
|
building_data = model_get_building_climate_zone_and_building_type(model)
|
|
@@ -3997,6 +4122,9 @@ class Standard
|
|
|
3997
4122
|
# gal/day from ICC IECC 2015 Residential Standard Reference Design
|
|
3998
4123
|
# from Table R405.5.2(1)
|
|
3999
4124
|
#
|
|
4125
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4126
|
+
# @param units_per_bldg [Double] number of units in the building
|
|
4127
|
+
# @param bedrooms_per_unit [Double] number of bedrooms per unit
|
|
4000
4128
|
# @return [Double] gal/day
|
|
4001
4129
|
def model_find_icc_iecc_2015_hot_water_demand(model, units_per_bldg, bedrooms_per_unit)
|
|
4002
4130
|
swh_gal_per_day = units_per_bldg * (30.0 + (10.0 * bedrooms_per_unit))
|
|
@@ -4006,6 +4134,9 @@ class Standard
|
|
|
4006
4134
|
|
|
4007
4135
|
# Returns average daily internal loads for residential buildings from Table R405.5.2(1)
|
|
4008
4136
|
#
|
|
4137
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4138
|
+
# @param units_per_bldg [Double] number of units in the building
|
|
4139
|
+
# @param bedrooms_per_unit [Double] number of bedrooms per unit
|
|
4009
4140
|
# @return [Hash] mech_vent_cfm, infiltration_ach, igain_btu_per_day, internal_mass_lbs
|
|
4010
4141
|
def model_find_icc_iecc_2015_internal_loads(model, units_per_bldg, bedrooms_per_unit)
|
|
4011
4142
|
# get total and conditioned floor area
|
|
@@ -4034,10 +4165,16 @@ class Standard
|
|
|
4034
4165
|
end
|
|
4035
4166
|
|
|
4036
4167
|
# Helper method to make a shortened version of a name that will be readable in a GUI.
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4168
|
+
#
|
|
4169
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4170
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
4171
|
+
# @param building_type [String] the building type
|
|
4172
|
+
# @param spc_type [String] the space type
|
|
4173
|
+
# @return [String] string of the model name
|
|
4174
|
+
def model_make_name(model, climate_zone, building_type, spc_type)
|
|
4175
|
+
climate_zone = climate_zone.gsub('ClimateZone ', 'CZ')
|
|
4176
|
+
if climate_zone == 'CZ1-8'
|
|
4177
|
+
climate_zone = ''
|
|
4041
4178
|
end
|
|
4042
4179
|
|
|
4043
4180
|
if building_type == 'FullServiceRestaurant'
|
|
@@ -4102,8 +4239,8 @@ class Standard
|
|
|
4102
4239
|
parts << spc_type
|
|
4103
4240
|
end
|
|
4104
4241
|
|
|
4105
|
-
unless
|
|
4106
|
-
parts <<
|
|
4242
|
+
unless climate_zone.empty?
|
|
4243
|
+
parts << climate_zone
|
|
4107
4244
|
end
|
|
4108
4245
|
|
|
4109
4246
|
result = parts.join(' - ')
|
|
@@ -4113,21 +4250,25 @@ class Standard
|
|
|
4113
4250
|
|
|
4114
4251
|
# Helper method to find out which climate zone set contains a specific climate zone.
|
|
4115
4252
|
# Returns climate zone set name as String if success, nil if not found.
|
|
4116
|
-
|
|
4253
|
+
#
|
|
4254
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4255
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
4256
|
+
# @return [String] climate zone set
|
|
4257
|
+
def model_find_climate_zone_set(model, climate_zone)
|
|
4117
4258
|
result = nil
|
|
4118
4259
|
|
|
4119
4260
|
possible_climate_zone_sets = []
|
|
4120
4261
|
standards_data['climate_zone_sets'].each do |climate_zone_set|
|
|
4121
|
-
if climate_zone_set['climate_zones'].include?(
|
|
4262
|
+
if climate_zone_set['climate_zones'].include?(climate_zone)
|
|
4122
4263
|
possible_climate_zone_sets << climate_zone_set['name']
|
|
4123
4264
|
end
|
|
4124
4265
|
end
|
|
4125
4266
|
|
|
4126
4267
|
# Check the results
|
|
4127
4268
|
if possible_climate_zone_sets.size.zero?
|
|
4128
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Cannot find a climate zone set containing #{
|
|
4269
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Cannot find a climate zone set containing #{climate_zone}. Make sure to use ASHRAE standards with ASHRAE climate zones and DEER or CA Title 24 standards with CEC climate zones.")
|
|
4129
4270
|
elsif possible_climate_zone_sets.size > 2
|
|
4130
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Found more than 2 climate zone sets containing #{
|
|
4271
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Found more than 2 climate zone sets containing #{climate_zone}; will return last matching climate zone set.")
|
|
4131
4272
|
end
|
|
4132
4273
|
|
|
4133
4274
|
# Get the climate zone from the possible set
|
|
@@ -4144,6 +4285,10 @@ class Standard
|
|
|
4144
4285
|
# Determine which climate zone to use.
|
|
4145
4286
|
# Defaults to the least specific climate zone set.
|
|
4146
4287
|
# For example, 2A and 2 both contain 2A, so use 2.
|
|
4288
|
+
#
|
|
4289
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4290
|
+
# @param possible_climate_zone_sets [Array] climate zone sets
|
|
4291
|
+
# @return [String] climate zone ses
|
|
4147
4292
|
def model_get_climate_zone_set_from_list(model, possible_climate_zone_sets)
|
|
4148
4293
|
climate_zone_set = possible_climate_zone_sets.min
|
|
4149
4294
|
return climate_zone_set
|
|
@@ -4152,6 +4297,9 @@ class Standard
|
|
|
4152
4297
|
# This method ensures that all spaces with spacetypes defined contain at least a standardSpaceType appropriate for the template.
|
|
4153
4298
|
# So, if any space with a space type defined does not have a Stnadard spacetype, or is undefined, an error will stop
|
|
4154
4299
|
# with information that the spacetype needs to be defined.
|
|
4300
|
+
#
|
|
4301
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4302
|
+
# @return [Bool] returns true if successful, false if not
|
|
4155
4303
|
def model_validate_standards_spacetypes_in_model(model)
|
|
4156
4304
|
error_string = ''
|
|
4157
4305
|
# populate search hash
|
|
@@ -4175,18 +4323,18 @@ class Standard
|
|
|
4175
4323
|
end
|
|
4176
4324
|
end
|
|
4177
4325
|
end
|
|
4178
|
-
if error_string == ''
|
|
4179
|
-
|
|
4180
|
-
else
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
end
|
|
4326
|
+
return true if error_string == ''
|
|
4327
|
+
|
|
4328
|
+
# else
|
|
4329
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', error_string)
|
|
4330
|
+
return false
|
|
4184
4331
|
end
|
|
4185
4332
|
|
|
4186
4333
|
# Create sorted hash of stories with data need to determine effective number of stories above and below grade
|
|
4187
4334
|
# the key should be the story object, which would allow other measures the ability to for example loop through spaces of the bottom story
|
|
4188
4335
|
#
|
|
4189
|
-
# @
|
|
4336
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4337
|
+
# @return [Hash] hash of space types with data in value necessary to determine effective number of stories above and below grade
|
|
4190
4338
|
def model_create_story_hash(model)
|
|
4191
4339
|
story_hash = {}
|
|
4192
4340
|
|
|
@@ -4229,7 +4377,8 @@ class Standard
|
|
|
4229
4377
|
|
|
4230
4378
|
# update count of ground wall areas
|
|
4231
4379
|
next if surface.surfaceType != 'Wall'
|
|
4232
|
-
next if surface.outsideBoundaryCondition != 'Ground'
|
|
4380
|
+
next if surface.outsideBoundaryCondition != 'Ground'
|
|
4381
|
+
# @todo make more flexible for slab/basement model.modeling
|
|
4233
4382
|
|
|
4234
4383
|
story_ground_wall_area += surface.grossArea
|
|
4235
4384
|
end
|
|
@@ -4269,7 +4418,8 @@ class Standard
|
|
|
4269
4418
|
# populate this method
|
|
4270
4419
|
# Determine the effective number of stories above and below grade
|
|
4271
4420
|
#
|
|
4272
|
-
# @
|
|
4421
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4422
|
+
# @return [Hash] hash with effective_num_stories_below_grade and effective_num_stories_above_grade
|
|
4273
4423
|
def model_effective_num_stories(model)
|
|
4274
4424
|
below_grade = 0
|
|
4275
4425
|
above_grade = 0
|
|
@@ -4300,8 +4450,9 @@ class Standard
|
|
|
4300
4450
|
|
|
4301
4451
|
# create space_type_hash with info such as effective_num_spaces, num_units, num_meds, num_meals
|
|
4302
4452
|
#
|
|
4453
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4303
4454
|
# @param trust_effective_num_spaces [Bool] defaults to false - set to true if modeled every space as a real rpp, vs. space as collection of rooms
|
|
4304
|
-
# @return [
|
|
4455
|
+
# @return [Hash] hash of space types with misc information
|
|
4305
4456
|
# @todo - add code when determining number of units to makeuse of trust_effective_num_spaces arg
|
|
4306
4457
|
def model_create_space_type_hash(model, trust_effective_num_spaces = false)
|
|
4307
4458
|
# assumed class size to deduct teachers from occupant count for classrooms
|
|
@@ -4405,58 +4556,13 @@ class Standard
|
|
|
4405
4556
|
return space_type_hash.sort.to_h
|
|
4406
4557
|
end
|
|
4407
4558
|
|
|
4408
|
-
# This method will apply the a FDWR to a model. It will remove any existing windows and doors and use the
|
|
4409
|
-
# Default contruction to set to apply the window construction. Sill height is in meters
|
|
4410
|
-
def apply_max_fdwr(model, runner, sillHeight_si, wwr)
|
|
4411
|
-
empty_const_warning = false
|
|
4412
|
-
model.getSpaces.sort.each do |space|
|
|
4413
|
-
space.surfaces.sort.each do |surface|
|
|
4414
|
-
zone = surface.space.get.thermalZone
|
|
4415
|
-
zone_multiplier = nil
|
|
4416
|
-
next if zone.empty?
|
|
4417
|
-
|
|
4418
|
-
if (surface.outsideBoundaryCondition == 'Outdoors') && (surface.surfaceType == 'Wall')
|
|
4419
|
-
surface.subSurfaces.each(&:remove)
|
|
4420
|
-
new_window = surface.setWindowToWallRatio(wwr, sillHeight_si, true)
|
|
4421
|
-
raise "#{surface.name.get} did not get set to #{wwr}. The size of the surface is #{surface.grossArea}" unless surface.windowToWallRatio.round(3) == wwr.round(3)
|
|
4422
|
-
|
|
4423
|
-
if new_window.empty?
|
|
4424
|
-
runner.registerWarning("The requested window to wall ratio for surface '#{surface.name}' was too large. Fenestration was not altered for this surface.")
|
|
4425
|
-
else
|
|
4426
|
-
windows_added = true
|
|
4427
|
-
# warn user if resulting window doesn't have a construction, as it will result in failed simulation. In the future may use logic from starting windows to apply construction to new window.
|
|
4428
|
-
if new_window.get.construction.empty? && (empty_const_warning == false)
|
|
4429
|
-
runner.registerWarning('one or more resulting windows do not have constructions. This script is intended to be used with models using construction sets versus hard assigned constructions.')
|
|
4430
|
-
empty_const_warning = true
|
|
4431
|
-
end
|
|
4432
|
-
end
|
|
4433
|
-
end
|
|
4434
|
-
end
|
|
4435
|
-
end
|
|
4436
|
-
end
|
|
4437
|
-
|
|
4438
|
-
# This method will apply the a SRR to a model. It will remove any existing skylights and use the
|
|
4439
|
-
# Default contruction to set to apply the skylight construction. A default skylight square area of 0.25^2 is used.
|
|
4440
|
-
def apply_max_srr(model, runner, srr, skylight_area = 0.25 * 0.25)
|
|
4441
|
-
spaces = []
|
|
4442
|
-
surface_type = 'RoofCeiling'
|
|
4443
|
-
model.getSpaces.sort.each do |space|
|
|
4444
|
-
space.surfaces.sort.each do |surface|
|
|
4445
|
-
if (surface.outsideBoundaryCondition == 'Outdoors') && (surface.surfaceType == surface_type)
|
|
4446
|
-
spaces << space
|
|
4447
|
-
break
|
|
4448
|
-
end
|
|
4449
|
-
end
|
|
4450
|
-
end
|
|
4451
|
-
pattern = OpenStudio::Model.generateSkylightPattern(spaces, spaces[0].directionofRelativeNorth, srr, Math.sqrt(skylight_area), Math.sqrt(skylight_area)) # ratio, x value, y value
|
|
4452
|
-
# applying skylight pattern
|
|
4453
|
-
skylights = OpenStudio::Model.applySkylightPattern(pattern, spaces, OpenStudio::Model::OptionalConstructionBase.new)
|
|
4454
|
-
spacenames = spaces.map { |space| space.name.get }
|
|
4455
|
-
runner.registerInfo("Adding #{skylights.size} skylights to #{spacenames}")
|
|
4456
|
-
end
|
|
4457
|
-
|
|
4458
4559
|
# This method will limit the subsurface of a given surface_type ("Wall" or "RoofCeiling") to the ratio for the building.
|
|
4459
4560
|
# This method only reduces subsurface sizes at most.
|
|
4561
|
+
#
|
|
4562
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
4563
|
+
# @param ratio [Double] ratio
|
|
4564
|
+
# @param surface_type [String] surface type
|
|
4565
|
+
# @return [Bool] returns true if successful, false if not
|
|
4460
4566
|
def apply_limit_to_subsurface_ratio(model, ratio, surface_type = 'Wall')
|
|
4461
4567
|
fdwr = get_outdoor_subsurface_ratio(model, surface_type)
|
|
4462
4568
|
if fdwr <= ratio
|
|
@@ -4486,14 +4592,14 @@ class Standard
|
|
|
4486
4592
|
return true
|
|
4487
4593
|
end
|
|
4488
4594
|
|
|
4489
|
-
# Converts the climate zone in the model into the format used
|
|
4490
|
-
#
|
|
4491
|
-
#
|
|
4492
|
-
#
|
|
4595
|
+
# Converts the climate zone in the model into the format used by the openstudio-standards lookup tables.
|
|
4596
|
+
# For example,
|
|
4597
|
+
# institution: ASHRAE, value: 6A becomes: ASHRAE 169-2013-6A.
|
|
4598
|
+
# institution: CEC, value: 3 becomes: CEC T24-CEC3.
|
|
4493
4599
|
#
|
|
4494
4600
|
# @param model [OpenStudio::Model::Model] the model
|
|
4495
4601
|
# @return [String] the string representation of the climate zone,
|
|
4496
|
-
#
|
|
4602
|
+
# empty string if no climate zone is present in the model.
|
|
4497
4603
|
def model_standards_climate_zone(model)
|
|
4498
4604
|
climate_zone = ''
|
|
4499
4605
|
model.getClimateZones.climateZones.each do |cz|
|
|
@@ -4520,9 +4626,8 @@ class Standard
|
|
|
4520
4626
|
# Clears out any climate zones previously added to the model.
|
|
4521
4627
|
#
|
|
4522
4628
|
# @param model [OpenStudio::Model::Model] the model
|
|
4523
|
-
# @param climate_zone [String]
|
|
4524
|
-
#
|
|
4525
|
-
# @return [Boolean] returns true if successful, false if not
|
|
4629
|
+
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
4630
|
+
# @return [Bool] returns true if successful, false if not
|
|
4526
4631
|
def model_set_climate_zone(model, climate_zone)
|
|
4527
4632
|
# Remove previous climate zones from the model
|
|
4528
4633
|
model.getClimateZones.clear
|
|
@@ -4538,7 +4643,12 @@ class Standard
|
|
|
4538
4643
|
return true
|
|
4539
4644
|
end
|
|
4540
4645
|
|
|
4541
|
-
# This method return the building ratio of subsurface_area / surface_type_area
|
|
4646
|
+
# This method return the building ratio of subsurface_area / surface_type_area
|
|
4647
|
+
# where surface_type can be "Wall" or "RoofCeiling"
|
|
4648
|
+
#
|
|
4649
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
4650
|
+
# @param surface_type [String] surface type
|
|
4651
|
+
# @return [Double] surface ratio
|
|
4542
4652
|
def get_outdoor_subsurface_ratio(model, surface_type = 'Wall')
|
|
4543
4653
|
surface_area = 0.0
|
|
4544
4654
|
sub_surface_area = 0
|
|
@@ -4564,6 +4674,7 @@ class Standard
|
|
|
4564
4674
|
|
|
4565
4675
|
# Loads a osm as a starting point.
|
|
4566
4676
|
#
|
|
4677
|
+
# @param osm_file [String] path to the .osm file, relative to the /data folder
|
|
4567
4678
|
# @return [Bool] returns true if successful, false if not
|
|
4568
4679
|
def load_initial_osm(osm_file)
|
|
4569
4680
|
# Load the geometry .osm
|
|
@@ -4579,6 +4690,10 @@ class Standard
|
|
|
4579
4690
|
return model
|
|
4580
4691
|
end
|
|
4581
4692
|
|
|
4693
|
+
# validate that model contains objects
|
|
4694
|
+
#
|
|
4695
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
4696
|
+
# @return [Bool] returns true if valid, false if not
|
|
4582
4697
|
def validate_initial_model(model)
|
|
4583
4698
|
is_valid = true
|
|
4584
4699
|
if model.getBuildingStorys.empty?
|
|
@@ -4644,6 +4759,7 @@ class Standard
|
|
|
4644
4759
|
# Removes all of the unused ResourceObjects
|
|
4645
4760
|
# (Curves, ScheduleDay, Material, etc.) from the model.
|
|
4646
4761
|
#
|
|
4762
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
4647
4763
|
# @return [Bool] returns true if successful, false if not
|
|
4648
4764
|
def model_remove_unused_resource_objects(model)
|
|
4649
4765
|
start_size = model.objects.size
|
|
@@ -4668,7 +4784,7 @@ class Standard
|
|
|
4668
4784
|
# Future new schedules should be designed as paramtric from the start and would not need to run through this inference process
|
|
4669
4785
|
#
|
|
4670
4786
|
# @author David Goldwasser
|
|
4671
|
-
# @param model [Model]
|
|
4787
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
4672
4788
|
# @param fraction_of_daily_occ_range [Double] fraction above/below daily min range required to start and end hours of operation
|
|
4673
4789
|
# @param invert_res [Bool] if true will reverse hours of operation for residential space types
|
|
4674
4790
|
# @param gen_occ_profile [Bool] if true creates a merged occupancy schedule for diagnostic purposes. This schedule is added to the model but no specifically returned by this method
|
|
@@ -4822,11 +4938,11 @@ class Standard
|
|
|
4822
4938
|
# should be traced back to a space or spaces.
|
|
4823
4939
|
#
|
|
4824
4940
|
# @author David Goldwasser
|
|
4825
|
-
# @param model [Model]
|
|
4826
|
-
# @param step_ramp_logic [String]
|
|
4827
|
-
# @param infer_hoo_for_non_assigned_objects [Bool]
|
|
4828
|
-
# @param gather_data_only
|
|
4829
|
-
# @param [
|
|
4941
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
4942
|
+
# @param step_ramp_logic [String] type of step logic to use
|
|
4943
|
+
# @param infer_hoo_for_non_assigned_objects [Bool] attempt to get hoo for objects like swh with and exterior lighting
|
|
4944
|
+
# @param gather_data_only [Bool] false (stops method before changes made if true)
|
|
4945
|
+
# @param hoo_var_method [String] accepts hours and fractional. Any other value value will result in hoo variables not being applied
|
|
4830
4946
|
# @return [Hash] schedule is key, value is hash of number of objects
|
|
4831
4947
|
def model_setup_parametric_schedules(model, step_ramp_logic: nil, infer_hoo_for_non_assigned_objects: true, gather_data_only: false, hoo_var_method: 'hours')
|
|
4832
4948
|
parametric_inputs = {}
|
|
@@ -4880,7 +4996,7 @@ class Standard
|
|
|
4880
4996
|
end
|
|
4881
4997
|
avail_mgrs = air_loop.availabilityManagers
|
|
4882
4998
|
avail_mgrs.sort.each do |avail_mgr|
|
|
4883
|
-
#
|
|
4999
|
+
# @todo I'm finding availability mangers, but not any resources for them, even if I use OpenStudio::Model.getRecursiveChildren(avail_mgr)
|
|
4884
5000
|
resources = avail_mgr.resources
|
|
4885
5001
|
resources = OpenStudio::Model.getRecursiveResources(avail_mgr)
|
|
4886
5002
|
resources.sort.each do |resource|
|
|
@@ -4948,11 +5064,11 @@ class Standard
|
|
|
4948
5064
|
end
|
|
4949
5065
|
end
|
|
4950
5066
|
|
|
4951
|
-
#
|
|
4952
|
-
# todo
|
|
5067
|
+
# @todo Service Water Heating supply side (may or may not be associated with a space)
|
|
5068
|
+
# @todo water use equipment definitions (temperature, sensible, latent) may be in multiple spaces, need to identify hoo, but typically constant schedules
|
|
4953
5069
|
|
|
4954
5070
|
# water use equipment (flow rate fraction)
|
|
4955
|
-
# todo
|
|
5071
|
+
# @todo address common schedules used across multiple instances
|
|
4956
5072
|
model.getWaterUseEquipments.sort.each do |water_use_equipment|
|
|
4957
5073
|
if water_use_equipment.flowRateFractionSchedule.is_initialized && water_use_equipment.flowRateFractionSchedule.get.to_ScheduleRuleset.is_initialized
|
|
4958
5074
|
schedule = water_use_equipment.flowRateFractionSchedule.get.to_ScheduleRuleset.get
|
|
@@ -4972,8 +5088,8 @@ class Standard
|
|
|
4972
5088
|
|
|
4973
5089
|
end
|
|
4974
5090
|
end
|
|
4975
|
-
#
|
|
4976
|
-
# todo
|
|
5091
|
+
# @todo Refrigeration (will be associated with thermal zone)
|
|
5092
|
+
# @todo exterior lights (will be astronomical, but like AEDG's may have reduction later at night)
|
|
4977
5093
|
|
|
4978
5094
|
return parametric_inputs
|
|
4979
5095
|
end
|
|
@@ -4985,7 +5101,7 @@ class Standard
|
|
|
4985
5101
|
# @note This measure will replace any prior chagnes made to ScheduleRule objects with new ScheduleRule values from
|
|
4986
5102
|
# profile formulas
|
|
4987
5103
|
# @author David Goldwasser
|
|
4988
|
-
# @param model [Model]
|
|
5104
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
4989
5105
|
# @param ramp_frequency [Double] ramp frequency in minutes. If nil method will match simulation timestep
|
|
4990
5106
|
# @param infer_hoo_for_non_assigned_objects [Bool] # attempt to get hoo for objects like swh with and exterior lighting
|
|
4991
5107
|
# @param error_on_out_of_order [Bool] true will error if applying formula creates out of order values
|
|
@@ -5010,7 +5126,7 @@ class Standard
|
|
|
5010
5126
|
# for now don't look at schedules without targets, in future can alter these by looking at building level hours of operation
|
|
5011
5127
|
next if sch.directUseCount <= 0 # won't catch if used for space type load instance, but that space type isn't used
|
|
5012
5128
|
|
|
5013
|
-
#
|
|
5129
|
+
# @todo address schedules that fall into this category, if they are used in the model
|
|
5014
5130
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', "For #{sch.sources.first.name}, #{sch.name} is not setup as parametric schedule. It has #{sch.sources.size} sources.")
|
|
5015
5131
|
next
|
|
5016
5132
|
end
|
|
@@ -5028,6 +5144,12 @@ class Standard
|
|
|
5028
5144
|
private
|
|
5029
5145
|
|
|
5030
5146
|
# Helper method to fill in hourly values
|
|
5147
|
+
#
|
|
5148
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
5149
|
+
# @param day_sch [OpenStudio::Model::ScheduleDay] schedule day object
|
|
5150
|
+
# @param sch_type [String] Constant or Hourly
|
|
5151
|
+
# @param values [Array<Double>]
|
|
5152
|
+
# @return [Bool] returns true if successful, false if not
|
|
5031
5153
|
def model_add_vals_to_sch(model, day_sch, sch_type, values)
|
|
5032
5154
|
if sch_type == 'Constant'
|
|
5033
5155
|
day_sch.addValue(OpenStudio::Time.new(0, 24, 0, 0), values[0])
|
|
@@ -5043,7 +5165,10 @@ class Standard
|
|
|
5043
5165
|
end
|
|
5044
5166
|
|
|
5045
5167
|
# Modify the existing service water heating loops to match the baseline required heating type.
|
|
5046
|
-
#
|
|
5168
|
+
#
|
|
5169
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
5170
|
+
# @param building_type [String] the building type
|
|
5171
|
+
# @return [Bool] returns true if successful, false if not
|
|
5047
5172
|
# @author Julien Marrec
|
|
5048
5173
|
def model_apply_baseline_swh_loops(model, building_type)
|
|
5049
5174
|
model.getPlantLoops.sort.each do |plant_loop|
|
|
@@ -5091,7 +5216,7 @@ class Standard
|
|
|
5091
5216
|
water_heater.setHeaterFuelType('Electricity')
|
|
5092
5217
|
water_heater.setHeaterThermalEfficiency(1.0)
|
|
5093
5218
|
else
|
|
5094
|
-
#
|
|
5219
|
+
# @todo for now, just get the first fuel that isn't Electricity
|
|
5095
5220
|
# A better way would be to count the capacities associated
|
|
5096
5221
|
# with each fuel type and use the preponderant one
|
|
5097
5222
|
fuels = htg_fuels - ['Electricity']
|
|
@@ -5128,7 +5253,9 @@ class Standard
|
|
|
5128
5253
|
# This should be done by the forward translator, and this code should be removed after this bug is fixed:
|
|
5129
5254
|
# https://github.com/NREL/OpenStudio/issues/2598
|
|
5130
5255
|
#
|
|
5131
|
-
#
|
|
5256
|
+
# @param model [OpenStudio::Model::Model] the model
|
|
5257
|
+
# @return [Bool] returns true if successful, false if not
|
|
5258
|
+
# @todo remove this method after OpenStudio issue #2598 is fixed.
|
|
5132
5259
|
def model_temp_fix_ems_references(model)
|
|
5133
5260
|
# Internal Variables
|
|
5134
5261
|
model.getEnergyManagementSystemInternalVariables.sort.each do |var|
|
|
@@ -5147,6 +5274,10 @@ class Standard
|
|
|
5147
5274
|
return true
|
|
5148
5275
|
end
|
|
5149
5276
|
|
|
5277
|
+
# Loads a geometry osm as a starting point.
|
|
5278
|
+
#
|
|
5279
|
+
# @param osm_model_path [String] path to the .osm file, relative to the /data folder
|
|
5280
|
+
# @return [OpenStudio::Model::Model] model object
|
|
5150
5281
|
def load_user_geometry_osm(osm_model_path:)
|
|
5151
5282
|
version_translator = OpenStudio::OSVersion::VersionTranslator.new
|
|
5152
5283
|
model = version_translator.loadModel(osm_model_path)
|
|
@@ -5187,7 +5318,7 @@ class Standard
|
|
|
5187
5318
|
# Loads a osm as a starting point.
|
|
5188
5319
|
#
|
|
5189
5320
|
# @param osm_file [String] path to the .osm file, relative to the /data folder
|
|
5190
|
-
# @return [
|
|
5321
|
+
# @return [OpenStudio::Model::Model] model object, false if not
|
|
5191
5322
|
def load_geometry_osm(osm_file)
|
|
5192
5323
|
# Load the geometry .osm from relative to the data folder
|
|
5193
5324
|
osm_model_path = "../../../data/#{osm_file}"
|
|
@@ -5241,8 +5372,10 @@ class Standard
|
|
|
5241
5372
|
# pass array of space types or spaces
|
|
5242
5373
|
#
|
|
5243
5374
|
# @author David Goldwasser
|
|
5244
|
-
# @param array of spaces or space types
|
|
5245
|
-
# @
|
|
5375
|
+
# @param space_space_types [Array] array of spaces or space types
|
|
5376
|
+
# @param parametric_inputs [Hash]
|
|
5377
|
+
# @param gather_data_only [Bool]
|
|
5378
|
+
# @return [Hash]
|
|
5246
5379
|
def gather_inputs_parametric_space_space_type_schedules(space_space_types, parametric_inputs, gather_data_only)
|
|
5247
5380
|
space_space_types.each do |space_type|
|
|
5248
5381
|
# get hours of operation for space type once
|
|
@@ -5297,8 +5430,11 @@ class Standard
|
|
|
5297
5430
|
# method to process load instance schedules for model_setup_parametric_schedules
|
|
5298
5431
|
#
|
|
5299
5432
|
# @author David Goldwasser
|
|
5300
|
-
# @param
|
|
5301
|
-
# @
|
|
5433
|
+
# @param load_inst [OpenStudio::Model::SpaceLoadInstance]
|
|
5434
|
+
# @param parametric_inputs [Hash]
|
|
5435
|
+
# @param hours_of_operation [Hash]
|
|
5436
|
+
# @param gather_data_only [Bool]
|
|
5437
|
+
# @return [Hash]
|
|
5302
5438
|
def gather_inputs_parametric_load_inst_schedules(load_inst, parametric_inputs, hours_of_operation, gather_data_only)
|
|
5303
5439
|
if load_inst.class.to_s == 'OpenStudio::Model::People'
|
|
5304
5440
|
opt_sch = load_inst.numberofPeopleSchedule
|
|
@@ -5319,9 +5455,15 @@ class Standard
|
|
|
5319
5455
|
# method to process load instance schedules for model_setup_parametric_schedules
|
|
5320
5456
|
#
|
|
5321
5457
|
# @author David Goldwasser
|
|
5322
|
-
# @param [
|
|
5323
|
-
# @param [
|
|
5324
|
-
# @
|
|
5458
|
+
# @param sch [OpenStudio::Model::Schedule]
|
|
5459
|
+
# @param load_inst [OpenStudio::Model::SpaceLoadInstance]
|
|
5460
|
+
# @param parametric_inputs [Hash]
|
|
5461
|
+
# @param hours_of_operation [Hash]
|
|
5462
|
+
# @param ramp [Bool]
|
|
5463
|
+
# @param min_ramp_dur_hr [Double]
|
|
5464
|
+
# @param gather_data_only [Bool]
|
|
5465
|
+
# @param hoo_var_method [String] accepts hours and fractional. Any other value value will result in hoo variables not being applied
|
|
5466
|
+
# @return [Hash]
|
|
5325
5467
|
def gather_inputs_parametric_schedules(sch, load_inst, parametric_inputs, hours_of_operation, ramp: true, min_ramp_dur_hr: 2.0, gather_data_only: false, hoo_var_method: 'hours')
|
|
5326
5468
|
if parametric_inputs.key?(sch)
|
|
5327
5469
|
if hours_of_operation != parametric_inputs[sch][:hoo_inputs] # don't warn if the hours of operation between old and new schedule are equivalent
|
|
@@ -5389,7 +5531,7 @@ class Standard
|
|
|
5389
5531
|
hoo_end = nil
|
|
5390
5532
|
occ = nil
|
|
5391
5533
|
vac = nil
|
|
5392
|
-
#
|
|
5534
|
+
# @todo issue warning when this happens on any profile that isn't a constant value
|
|
5393
5535
|
else
|
|
5394
5536
|
# get hours of operation for this specific profile
|
|
5395
5537
|
hoo_start = hours_of_operation[hoo_target_index][:hoo_start]
|
|
@@ -5472,7 +5614,7 @@ class Standard
|
|
|
5472
5614
|
daily_flh = day_schedule_equivalent_full_load_hrs(schedule_day)
|
|
5473
5615
|
percent_change = ((daily_flh - est_daily_flh) / daily_flh) * 100.0
|
|
5474
5616
|
if percent_change.abs > 0.05
|
|
5475
|
-
#
|
|
5617
|
+
# @todo this estimation can have flaws. Fix or remove it, make sure to update for secondary logic (if we implement that here)
|
|
5476
5618
|
# post application checks compares against actual instead of estimated values
|
|
5477
5619
|
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.Model', "For day schedule #{schedule_day.name} in #{sch.name} there was a #{percent_change.round(4)}% change. Expected full load hours is #{daily_flh.round(4)}, but estimated value is #{est_daily_flh.round(4)}")
|
|
5478
5620
|
end
|
|
@@ -5575,7 +5717,7 @@ class Standard
|
|
|
5575
5717
|
time = "hoo_start - vac * #{min_value_vac_fract.round(3)}"
|
|
5576
5718
|
end
|
|
5577
5719
|
elsif min_key == 'mid'
|
|
5578
|
-
#
|
|
5720
|
+
# @todo see what is going wrong with after mid in formula
|
|
5579
5721
|
if min_value == 0
|
|
5580
5722
|
time = 'mid'
|
|
5581
5723
|
# converted to variable for simplicity but could also be described like this
|
|
@@ -5610,10 +5752,10 @@ class Standard
|
|
|
5610
5752
|
# store profile formula with hoo and value variables
|
|
5611
5753
|
props.setFeature('param_day_profile', raw_string.join(' | '))
|
|
5612
5754
|
|
|
5613
|
-
#
|
|
5614
|
-
# todo
|
|
5615
|
-
# todo
|
|
5616
|
-
# todo
|
|
5755
|
+
# @todo not used yet, but will add methods described below and others
|
|
5756
|
+
# @todo lower infiltration based on air loop hours of operation if air loop has outdoor air object
|
|
5757
|
+
# @todo lower lighting or plug loads based on occupancy at given time steps in a space
|
|
5758
|
+
# @todo set elevator fraction based multiple factors such as trips, occupants per trip, and elevator type to determine floor consumption when not in use.
|
|
5617
5759
|
props.setFeature('param_day_secondary_logic', '') # secondary logic method such as occupancy impacting schedule values
|
|
5618
5760
|
props.setFeature('param_day_secondary_logic_arg_val', '') # optional argument used for some secondary logic applied to values
|
|
5619
5761
|
|
|
@@ -5639,7 +5781,7 @@ class Standard
|
|
|
5639
5781
|
|
|
5640
5782
|
# Default SAT reset type
|
|
5641
5783
|
#
|
|
5642
|
-
# @param air_loop_hvac [OpenStudio::
|
|
5784
|
+
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
5643
5785
|
# @return [String] Returns type of SAT reset
|
|
5644
5786
|
def air_loop_hvac_supply_air_temperature_reset_type(air_loop_hvac)
|
|
5645
5787
|
return 'warmest_zone'
|