openstudio-standards 0.2.14 → 0.2.15.pre.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,779 @@
|
|
1
|
+
class NECB2020
|
2
|
+
|
3
|
+
# Reduces the WWR to the values specified by the NECB
|
4
|
+
# NECB 3.2.1.4
|
5
|
+
def apply_standard_window_to_wall_ratio(model:, fdwr_set: -1.0)
|
6
|
+
# NECB FDWR limit
|
7
|
+
hdd = self.get_necb_hdd18(model)
|
8
|
+
|
9
|
+
# Get the maximum NECB fdwr
|
10
|
+
# fdwr_set settings:
|
11
|
+
# 0-1: Remove all windows and add windows to match this fdwr
|
12
|
+
# -1: Remove all windows and add windows to match max fdwr from NECB
|
13
|
+
# -2: Do not apply any fdwr changes, leave windows alone (also works for fdwr > 1)
|
14
|
+
# -3: Use old method which reduces existing window size (if necessary) to meet maximum NECB fdwr limit
|
15
|
+
# <-3.1: Remove all the windows
|
16
|
+
# > 1: Do nothing
|
17
|
+
|
18
|
+
if fdwr_set.to_f > 1.0
|
19
|
+
return
|
20
|
+
elsif fdwr_set.to_f >= 0.0 and fdwr_set <= 1.0
|
21
|
+
apply_max_fdwr_nrcan(model: model, fdwr_lim: fdwr_set.to_f)
|
22
|
+
return
|
23
|
+
elsif fdwr_set.to_f >= -1.1 and fdwr_set <= -0.9
|
24
|
+
fdwr_lim = (max_fwdr(hdd)).round(3)
|
25
|
+
apply_max_fdwr_nrcan(model: model, fdwr_lim: fdwr_lim.to_f)
|
26
|
+
return
|
27
|
+
elsif fdwr_set.to_f >= -2.1 and fdwr_set <= -1.9
|
28
|
+
return
|
29
|
+
elsif fdwr_set.to_f >= -3.1 and fdwr_set <= -2.9
|
30
|
+
fdwr_lim = (max_fwdr(hdd) * 100.0).round(1)
|
31
|
+
return apply_limit_fdwr(model: model, fdwr_lim: fdwr_lim.to_f)
|
32
|
+
elsif fdwr_set < -3.1
|
33
|
+
apply_max_fdwr_nrcan(model: model, fdwr_lim: fdwr_set.to_f)
|
34
|
+
return
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def apply_limit_fdwr(model:, fdwr_lim:)
|
39
|
+
# Loop through all spaces in the model, and
|
40
|
+
# per the PNNL PRM Reference Manual, find the areas
|
41
|
+
# of each space conditioning category (res, nonres, semi-heated)
|
42
|
+
# separately. Include space multipliers.
|
43
|
+
nr_wall_m2 = 0.001 # Avoids divide by zero errors later
|
44
|
+
nr_wind_m2 = 0
|
45
|
+
res_wall_m2 = 0.001
|
46
|
+
res_wind_m2 = 0
|
47
|
+
sh_wall_m2 = 0.001
|
48
|
+
sh_wind_m2 = 0
|
49
|
+
total_wall_m2 = 0.001
|
50
|
+
total_subsurface_m2 = 0.0
|
51
|
+
# Store the space conditioning category for later use
|
52
|
+
space_cats = {}
|
53
|
+
model.getSpaces.sort.each do |space|
|
54
|
+
# Loop through all surfaces in this space
|
55
|
+
wall_area_m2 = 0
|
56
|
+
wind_area_m2 = 0
|
57
|
+
space.surfaces.sort.each do |surface|
|
58
|
+
# Skip non-outdoor surfaces
|
59
|
+
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
60
|
+
# Skip non-walls
|
61
|
+
next unless surface.surfaceType.casecmp('wall').zero?
|
62
|
+
# This wall's gross area (including window area)
|
63
|
+
wall_area_m2 += surface.grossArea * space.multiplier
|
64
|
+
# Subsurfaces in this surface
|
65
|
+
surface.subSurfaces.sort.each do |ss|
|
66
|
+
wind_area_m2 += ss.netArea * space.multiplier
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# Determine the space category
|
71
|
+
# zTODO This should really use the heating/cooling loads
|
72
|
+
# from the proposed building. However, in an attempt
|
73
|
+
# to avoid another sizing run just for this purpose,
|
74
|
+
# conditioned status is based on heating/cooling
|
75
|
+
# setpoints. If heated-only, will be assumed Semiheated.
|
76
|
+
# The full-bore method is on the next line in case needed.
|
77
|
+
# cat = thermal_zone_conditioning_category(space, template, climate_zone)
|
78
|
+
cooled = space_cooled?(space)
|
79
|
+
heated = space_heated?(space)
|
80
|
+
cat = 'Unconditioned'
|
81
|
+
# Unconditioned
|
82
|
+
if !heated && !cooled
|
83
|
+
cat = 'Unconditioned'
|
84
|
+
# Heated-Only
|
85
|
+
elsif heated && !cooled
|
86
|
+
cat = 'Semiheated'
|
87
|
+
# Heated and Cooled
|
88
|
+
else
|
89
|
+
res = thermal_zone_residential?(space.thermalZone.get)
|
90
|
+
cat = if res
|
91
|
+
'ResConditioned'
|
92
|
+
else
|
93
|
+
'NonResConditioned'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
space_cats[space] = cat
|
97
|
+
# NECB2011 keep track of totals for NECB regardless of conditioned or not.
|
98
|
+
total_wall_m2 += wall_area_m2
|
99
|
+
total_subsurface_m2 += wind_area_m2 # this contains doors as well.
|
100
|
+
|
101
|
+
# Add to the correct category
|
102
|
+
case cat
|
103
|
+
when 'Unconditioned'
|
104
|
+
next # Skip unconditioned spaces
|
105
|
+
when 'NonResConditioned'
|
106
|
+
nr_wall_m2 += wall_area_m2
|
107
|
+
nr_wind_m2 += wind_area_m2
|
108
|
+
when 'ResConditioned'
|
109
|
+
res_wall_m2 += wall_area_m2
|
110
|
+
res_wind_m2 += wind_area_m2
|
111
|
+
when 'Semiheated'
|
112
|
+
sh_wall_m2 += wall_area_m2
|
113
|
+
sh_wind_m2 += wind_area_m2
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
# Calculate the WWR of each category
|
118
|
+
wwr_nr = ((nr_wind_m2 / nr_wall_m2) * 100.0).round(1)
|
119
|
+
wwr_res = ((res_wind_m2 / res_wall_m2) * 100).round(1)
|
120
|
+
wwr_sh = ((sh_wind_m2 / sh_wall_m2) * 100).round(1)
|
121
|
+
fdwr = ((total_subsurface_m2 / total_wall_m2) * 100).round(1) # used by NECB2011
|
122
|
+
|
123
|
+
# Convert to IP and report
|
124
|
+
nr_wind_ft2 = OpenStudio.convert(nr_wind_m2, 'm^2', 'ft^2').get
|
125
|
+
nr_wall_ft2 = OpenStudio.convert(nr_wall_m2, 'm^2', 'ft^2').get
|
126
|
+
|
127
|
+
res_wind_ft2 = OpenStudio.convert(res_wind_m2, 'm^2', 'ft^2').get
|
128
|
+
res_wall_ft2 = OpenStudio.convert(res_wall_m2, 'm^2', 'ft^2').get
|
129
|
+
|
130
|
+
sh_wind_ft2 = OpenStudio.convert(sh_wind_m2, 'm^2', 'ft^2').get
|
131
|
+
sh_wall_ft2 = OpenStudio.convert(sh_wall_m2, 'm^2', 'ft^2').get
|
132
|
+
|
133
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "WWR NonRes = #{wwr_nr.round}%; window = #{nr_wind_ft2.round} ft2, wall = #{nr_wall_ft2.round} ft2.")
|
134
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "WWR Res = #{wwr_res.round}%; window = #{res_wind_ft2.round} ft2, wall = #{res_wall_ft2.round} ft2.")
|
135
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "WWR Semiheated = #{wwr_sh.round}%; window = #{sh_wind_ft2.round} ft2, wall = #{sh_wall_ft2.round} ft2.")
|
136
|
+
|
137
|
+
# WWR limit
|
138
|
+
wwr_lim = 40.0
|
139
|
+
|
140
|
+
# Check against WWR limit
|
141
|
+
red_nr = wwr_nr > wwr_lim
|
142
|
+
red_res = wwr_res > wwr_lim
|
143
|
+
red_sh = wwr_sh > wwr_lim
|
144
|
+
|
145
|
+
# puts "Current FDWR is #{fdwr}, must be less than #{fdwr_lim}."
|
146
|
+
# puts "Current subsurf area is #{total_subsurface_m2} and gross surface area is #{total_wall_m2}"
|
147
|
+
# Stop here unless windows / doors need reducing
|
148
|
+
return true unless fdwr > fdwr_lim
|
149
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Reducing the size of all windows (by raising sill height) to reduce window area down to the limit of #{wwr_lim.round}%.")
|
150
|
+
# Determine the factors by which to reduce the window / door area
|
151
|
+
mult = fdwr_lim / fdwr
|
152
|
+
# Reduce the window area if any of the categories necessary
|
153
|
+
model.getSpaces.sort.each do |space|
|
154
|
+
# Loop through all surfaces in this space
|
155
|
+
space.surfaces.sort.each do |surface|
|
156
|
+
# Skip non-outdoor surfaces
|
157
|
+
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
158
|
+
# Skip non-walls
|
159
|
+
next unless surface.surfaceType == 'Wall'
|
160
|
+
# Subsurfaces in this surface
|
161
|
+
surface.subSurfaces.sort.each do |ss|
|
162
|
+
# Reduce the size of the window
|
163
|
+
red = 1.0 - mult
|
164
|
+
sub_surface_reduce_area_by_percent_by_raising_sill(ss, red)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
return true
|
169
|
+
end
|
170
|
+
|
171
|
+
# Reduces the SRR to the values specified by the PRM. SRR reduction
|
172
|
+
# will be done by shrinking vertices toward the centroid.
|
173
|
+
#
|
174
|
+
def apply_standard_skylight_to_roof_ratio(model:, srr_set: -1.0)
|
175
|
+
|
176
|
+
# If srr_set is between 1.0 and 1.2 set it to the maximum allowed by the NECB. If srr_set is between 0.0 and 1.0
|
177
|
+
# apply whatever was passed. If srr_set >= 1.2 then set the existing srr of the building to be the necb maximum
|
178
|
+
# only if the the srr exceeds this maximum (otherwise leave it to be whatever was modeled).
|
179
|
+
|
180
|
+
# srr_set settings:
|
181
|
+
# 0-1: Remove all skylights and add skylights to match this srr
|
182
|
+
# -1: Remove all skylights and add skylights to match max srr from NECB
|
183
|
+
# -2: Do not apply any srr changes, leave skylights alone (also works for srr > 1)
|
184
|
+
# -3: Use old method which reduces existing skylight size (if necessary) to meet maximum NECB skylight limit
|
185
|
+
# <-3.1: Remove all the skylights
|
186
|
+
# > 1: Do nothing
|
187
|
+
|
188
|
+
if srr_set.to_f > 1.0
|
189
|
+
return
|
190
|
+
elsif srr_set.to_f >= 0.0 && srr_set <= 1.0
|
191
|
+
apply_max_srr_nrcan(model: model, srr_lim: srr_set.to_f)
|
192
|
+
return
|
193
|
+
elsif srr_set.to_f >= -1.1 && srr_set <= -0.9
|
194
|
+
# Get the maximum NECB srr
|
195
|
+
srr_lim = self.get_standards_constant('skylight_to_roof_ratio_max_value')
|
196
|
+
apply_max_srr_nrcan(model: model, srr_lim: srr_lim.to_f)
|
197
|
+
return
|
198
|
+
elsif srr_set.to_f >= -2.1 && srr_set <= -1.9
|
199
|
+
return
|
200
|
+
elsif srr_set.to_f >= -3.1 && srr_set <= -2.9
|
201
|
+
# Continue with the rest of this method, use old method which reduces existing skylight size (if necessary) to
|
202
|
+
# meet maximum srr limit
|
203
|
+
elsif srr_set < -3.1
|
204
|
+
apply_max_srr_nrcan(model: model, srr_lim: srr_set.to_f)
|
205
|
+
return
|
206
|
+
else
|
207
|
+
return
|
208
|
+
end
|
209
|
+
|
210
|
+
# SRR limit
|
211
|
+
srr_lim = self.get_standards_constant('skylight_to_roof_ratio_max_value') * 100.0
|
212
|
+
|
213
|
+
# Loop through all spaces in the model, and
|
214
|
+
# per the PNNL PRM Reference Manual, find the areas
|
215
|
+
# of each space conditioning category (res, nonres, semi-heated)
|
216
|
+
# separately. Include space multipliers.
|
217
|
+
nr_wall_m2 = 0.001 # Avoids divide by zero errors later
|
218
|
+
nr_sky_m2 = 0
|
219
|
+
res_wall_m2 = 0.001
|
220
|
+
res_sky_m2 = 0
|
221
|
+
sh_wall_m2 = 0.001
|
222
|
+
sh_sky_m2 = 0
|
223
|
+
total_roof_m2 = 0.001
|
224
|
+
total_subsurface_m2 = 0
|
225
|
+
model.getSpaces.sort.each do |space|
|
226
|
+
# Loop through all surfaces in this space
|
227
|
+
wall_area_m2 = 0
|
228
|
+
sky_area_m2 = 0
|
229
|
+
space.surfaces.sort.each do |surface|
|
230
|
+
# Skip non-outdoor surfaces
|
231
|
+
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
232
|
+
# Skip non-walls
|
233
|
+
next unless surface.surfaceType == 'RoofCeiling'
|
234
|
+
# This wall's gross area (including skylight area)
|
235
|
+
wall_area_m2 += surface.grossArea * space.multiplier
|
236
|
+
# Subsurfaces in this surface
|
237
|
+
surface.subSurfaces.sort.each do |ss|
|
238
|
+
sky_area_m2 += ss.netArea * space.multiplier
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
# Determine the space category
|
243
|
+
cat = 'NonRes'
|
244
|
+
if space_residential?(space)
|
245
|
+
cat = 'Res'
|
246
|
+
end
|
247
|
+
# if space.is_semiheated
|
248
|
+
# cat = 'Semiheated'
|
249
|
+
# end
|
250
|
+
|
251
|
+
# Add to the correct category
|
252
|
+
case cat
|
253
|
+
when 'NonRes'
|
254
|
+
nr_wall_m2 += wall_area_m2
|
255
|
+
nr_sky_m2 += sky_area_m2
|
256
|
+
when 'Res'
|
257
|
+
res_wall_m2 += wall_area_m2
|
258
|
+
res_sky_m2 += sky_area_m2
|
259
|
+
when 'Semiheated'
|
260
|
+
sh_wall_m2 += wall_area_m2
|
261
|
+
sh_sky_m2 += sky_area_m2
|
262
|
+
end
|
263
|
+
total_roof_m2 += wall_area_m2
|
264
|
+
total_subsurface_m2 += sky_area_m2
|
265
|
+
end
|
266
|
+
|
267
|
+
# Calculate the SRR of each category
|
268
|
+
srr_nr = ((nr_sky_m2 / nr_wall_m2) * 100).round(1)
|
269
|
+
srr_res = ((res_sky_m2 / res_wall_m2) * 100).round(1)
|
270
|
+
srr_sh = ((sh_sky_m2 / sh_wall_m2) * 100).round(1)
|
271
|
+
srr = ((total_subsurface_m2 / total_roof_m2) * 100.0).round(1)
|
272
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "The skylight to roof ratios (SRRs) are: NonRes: #{srr_nr.round}%, Res: #{srr_res.round}%.")
|
273
|
+
|
274
|
+
# Check against SRR limit
|
275
|
+
red_nr = srr_nr > srr_lim
|
276
|
+
red_res = srr_res > srr_lim
|
277
|
+
red_sh = srr_sh > srr_lim
|
278
|
+
|
279
|
+
# Stop here unless windows need reducing
|
280
|
+
return true unless srr > srr_lim
|
281
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Reducing the size of all windows (by raising sill height) to reduce window area down to the limit of #{srr_lim.round}%.")
|
282
|
+
# Determine the factors by which to reduce the window / door area
|
283
|
+
mult = srr_lim / srr
|
284
|
+
|
285
|
+
# Reduce the subsurface areas
|
286
|
+
model.getSpaces.sort.each do |space|
|
287
|
+
# Loop through all surfaces in this space
|
288
|
+
space.surfaces.sort.each do |surface|
|
289
|
+
# Skip non-outdoor surfaces
|
290
|
+
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
291
|
+
# Skip non-walls
|
292
|
+
next unless surface.surfaceType == 'RoofCeiling'
|
293
|
+
# Subsurfaces in this surface
|
294
|
+
surface.subSurfaces.sort.each do |ss|
|
295
|
+
# Reduce the size of the subsurface
|
296
|
+
red = 1.0 - mult
|
297
|
+
sub_surface_reduce_area_by_percent_by_shrinking_toward_centroid(ss, red)
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
return true
|
303
|
+
end
|
304
|
+
|
305
|
+
# @author phylroy.lopez@nrcan.gc.ca
|
306
|
+
# @param hdd [Float]
|
307
|
+
# @return [Double] a constant float
|
308
|
+
def max_fwdr(hdd)
|
309
|
+
# get formula from json database.
|
310
|
+
return eval(get_standards_formula('fdwr_formula'))
|
311
|
+
end
|
312
|
+
|
313
|
+
# Go through the default construction sets and hard-assigned
|
314
|
+
# constructions. Clone the existing constructions and set their
|
315
|
+
# intended surface type and standards construction type per
|
316
|
+
# the PRM. For some standards, this will involve making
|
317
|
+
# modifications. For others, it will not.
|
318
|
+
#
|
319
|
+
# 90.1-2007, 90.1-2010, 90.1-2013
|
320
|
+
# @return [Bool] returns true if successful, false if not
|
321
|
+
|
322
|
+
def apply_standard_construction_properties(model:,
|
323
|
+
runner: nil,
|
324
|
+
# ext surfaces
|
325
|
+
ext_wall_cond: nil,
|
326
|
+
ext_floor_cond: nil,
|
327
|
+
ext_roof_cond: nil,
|
328
|
+
# ground surfaces
|
329
|
+
ground_wall_cond: nil,
|
330
|
+
ground_floor_cond: nil,
|
331
|
+
ground_roof_cond: nil,
|
332
|
+
# fixed Windows
|
333
|
+
fixed_window_cond: nil,
|
334
|
+
fixed_wind_solar_trans: nil,
|
335
|
+
fixed_wind_vis_trans: nil,
|
336
|
+
# operable windows
|
337
|
+
operable_wind_solar_trans: nil,
|
338
|
+
operable_window_cond: nil,
|
339
|
+
operable_wind_vis_trans: nil,
|
340
|
+
# glass doors
|
341
|
+
glass_door_cond: nil,
|
342
|
+
glass_door_solar_trans: nil,
|
343
|
+
glass_door_vis_trans: nil,
|
344
|
+
# opaque doors
|
345
|
+
door_construction_cond: nil,
|
346
|
+
overhead_door_cond: nil,
|
347
|
+
# skylights
|
348
|
+
skylight_cond: nil,
|
349
|
+
skylight_solar_trans: nil,
|
350
|
+
skylight_vis_trans: nil,
|
351
|
+
# tubular daylight dome
|
352
|
+
tubular_daylight_dome_cond: nil,
|
353
|
+
tubular_daylight_dome_solar_trans: nil,
|
354
|
+
tubular_daylight_dome_vis_trans: nil,
|
355
|
+
# tubular daylight diffuser
|
356
|
+
tubular_daylight_diffuser_cond: nil,
|
357
|
+
tubular_daylight_diffuser_solar_trans: nil,
|
358
|
+
tubular_daylight_diffuser_vis_trans: nil)
|
359
|
+
|
360
|
+
model.getDefaultConstructionSets.sort.each do |default_surface_construction_set|
|
361
|
+
BTAP.runner_register('Info', 'apply_standard_construction_properties', runner)
|
362
|
+
if model.weatherFile.empty? || model.weatherFile.get.path.empty? || !File.exist?(model.weatherFile.get.path.get.to_s)
|
363
|
+
|
364
|
+
BTAP.runner_register('Error', 'Weather file is not defined. Please ensure the weather file is defined and exists.', runner)
|
365
|
+
return false
|
366
|
+
end
|
367
|
+
|
368
|
+
# Lambdas are preferred over methods in methods for small utility methods.
|
369
|
+
correct_cond = lambda do |conductivity, surface_type|
|
370
|
+
# hdd required in scope for eval function.
|
371
|
+
hdd = get_necb_hdd18(model)
|
372
|
+
return conductivity.nil? || conductivity.to_f <= 0.0 || conductivity =="NECB_Default" ? eval(model_find_objects(@standards_data['surface_thermal_transmittance'], surface_type)[0]['formula']) : conductivity.to_f
|
373
|
+
end
|
374
|
+
|
375
|
+
# Converts trans and vis to nil if requesting default.. or casts the string to a float.
|
376
|
+
correct_vis_trans = lambda do |value|
|
377
|
+
return value.nil? || value.to_f <= 0.0 || value =="NECB_Default" ? nil : value.to_f
|
378
|
+
end
|
379
|
+
|
380
|
+
BTAP::Resources::Envelope::ConstructionSets.customize_default_surface_construction_set!(model: model,
|
381
|
+
name: "#{default_surface_construction_set.name.get} at hdd = #{get_necb_hdd18(model)}",
|
382
|
+
default_surface_construction_set: default_surface_construction_set,
|
383
|
+
# ext surfaces
|
384
|
+
ext_wall_cond: correct_cond.call(ext_wall_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Wall'}),
|
385
|
+
ext_floor_cond: correct_cond.call(ext_floor_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Floor'}),
|
386
|
+
ext_roof_cond: correct_cond.call(ext_roof_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'RoofCeiling'}),
|
387
|
+
# ground surfaces
|
388
|
+
ground_wall_cond: correct_cond.call(ground_wall_cond, {'boundary_condition' => 'Ground', 'surface' => 'Wall'}),
|
389
|
+
ground_floor_cond: correct_cond.call(ground_floor_cond, {'boundary_condition' => 'Ground', 'surface' => 'Floor'}),
|
390
|
+
ground_roof_cond: correct_cond.call(ground_roof_cond, {'boundary_condition' => 'Ground', 'surface' => 'RoofCeiling'}),
|
391
|
+
# fixed Windows
|
392
|
+
fixed_window_cond: correct_cond.call(fixed_window_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Window'}),
|
393
|
+
fixed_wind_solar_trans: correct_vis_trans.call(fixed_wind_solar_trans),
|
394
|
+
fixed_wind_vis_trans: correct_vis_trans.call(fixed_wind_vis_trans),
|
395
|
+
# operable windows
|
396
|
+
operable_wind_solar_trans: correct_vis_trans.call(operable_wind_solar_trans),
|
397
|
+
operable_window_cond: correct_cond.call(fixed_window_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Window'}),
|
398
|
+
operable_wind_vis_trans: correct_vis_trans.call(operable_wind_vis_trans),
|
399
|
+
# glass doors
|
400
|
+
glass_door_cond: correct_cond.call(glass_door_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Window'}),
|
401
|
+
glass_door_solar_trans: correct_vis_trans.call(glass_door_solar_trans),
|
402
|
+
glass_door_vis_trans: correct_vis_trans.call(glass_door_vis_trans),
|
403
|
+
# opaque doors
|
404
|
+
door_construction_cond: correct_cond.call(door_construction_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Door'}),
|
405
|
+
overhead_door_cond: correct_cond.call(overhead_door_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Door'}),
|
406
|
+
# skylights
|
407
|
+
skylight_cond: correct_cond.call(skylight_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Skylight'}),
|
408
|
+
skylight_solar_trans: correct_vis_trans.call(skylight_solar_trans),
|
409
|
+
skylight_vis_trans: correct_vis_trans.call(skylight_vis_trans),
|
410
|
+
# tubular daylight dome
|
411
|
+
tubular_daylight_dome_cond: correct_cond.call(skylight_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Skylight'}),
|
412
|
+
tubular_daylight_dome_solar_trans: correct_vis_trans.call(tubular_daylight_dome_solar_trans),
|
413
|
+
tubular_daylight_dome_vis_trans: correct_vis_trans.call(tubular_daylight_dome_vis_trans),
|
414
|
+
# tubular daylight diffuser
|
415
|
+
tubular_daylight_diffuser_cond: correct_cond.call(skylight_cond, {'boundary_condition' => 'Outdoors', 'surface' => 'Skylight'}),
|
416
|
+
tubular_daylight_diffuser_solar_trans: correct_vis_trans.call(tubular_daylight_diffuser_solar_trans),
|
417
|
+
tubular_daylight_diffuser_vis_trans: correct_vis_trans.call(tubular_daylight_diffuser_vis_trans)
|
418
|
+
)
|
419
|
+
|
420
|
+
|
421
|
+
end
|
422
|
+
# sets all surfaces to use default constructions sets except adiabatic, where it does a hard assignment of the interior wall construction type.
|
423
|
+
model.getPlanarSurfaces.sort.each(&:resetConstruction)
|
424
|
+
# if the default construction set is defined..try to assign the interior wall to the adiabatic surfaces
|
425
|
+
BTAP::Resources::Envelope.assign_interior_surface_construction_to_adiabatic_surfaces(model, nil)
|
426
|
+
BTAP.runner_register('Info', ' apply_standard_construction_properties was sucessful.', runner)
|
427
|
+
|
428
|
+
end
|
429
|
+
|
430
|
+
# Set all external surface conductances to NECB values.
|
431
|
+
# @author phylroy.lopez@nrcan.gc.ca
|
432
|
+
# @param surface [String]
|
433
|
+
# @param hdd [Float]
|
434
|
+
# @param is_radiant [Boolian]
|
435
|
+
# @param scaling_factor [Float]
|
436
|
+
# @return [String] surface as RSI
|
437
|
+
def set_necb_external_surface_conductance(surface, hdd, is_radiant = false, scaling_factor = 1.0)
|
438
|
+
conductance_value = 0
|
439
|
+
|
440
|
+
if surface.outsideBoundaryCondition.casecmp('outdoors').zero?
|
441
|
+
|
442
|
+
case surface.surfaceType.downcase
|
443
|
+
when 'wall'
|
444
|
+
conductance_value = @standards_data['conductances']['Wall'].find { |i| i['hdd'] > hdd }['thermal_transmittance'] * scaling_factor
|
445
|
+
when 'floor'
|
446
|
+
conductance_value = @standards_data['conductances']['Floor'].find { |i| i['hdd'] > hdd }['thermal_transmittance'] * scaling_factor
|
447
|
+
when 'roofceiling'
|
448
|
+
conductance_value = @standards_data['conductances']['Roof'].find { |i| i['hdd'] > hdd }['thermal_transmittance'] * scaling_factor
|
449
|
+
end
|
450
|
+
if is_radiant
|
451
|
+
conductance_value *= 0.80
|
452
|
+
end
|
453
|
+
return BTAP::Geometry::Surfaces.set_surfaces_construction_conductance([surface], conductance_value)
|
454
|
+
end
|
455
|
+
|
456
|
+
if surface.outsideBoundaryCondition.downcase =~ /ground/
|
457
|
+
case surface.surfaceType.downcase
|
458
|
+
when 'wall'
|
459
|
+
conductance_value = @standards_data['conductances']['GroundWall'].find { |i| i['hdd'] > hdd }['thermal_transmittance'] * scaling_factor
|
460
|
+
when 'floor'
|
461
|
+
conductance_value = @standards_data['conductances']['GroundFloor'].find { |i| i['hdd'] > hdd }['thermal_transmittance'] * scaling_factor
|
462
|
+
when 'roofceiling'
|
463
|
+
conductance_value = @standards_data['conductances']['GroundRoof'].find { |i| i['hdd'] > hdd }['thermal_transmittance'] * scaling_factor
|
464
|
+
end
|
465
|
+
if is_radiant
|
466
|
+
conductance_value *= 0.80
|
467
|
+
end
|
468
|
+
return BTAP::Geometry::Surfaces.set_surfaces_construction_conductance([surface], conductance_value)
|
469
|
+
end
|
470
|
+
end
|
471
|
+
|
472
|
+
# Set all external subsurfaces (doors, windows, skylights) to NECB values.
|
473
|
+
# @author phylroy.lopez@nrcan.gc.ca
|
474
|
+
# @param subsurface [String]
|
475
|
+
# @param hdd [Float]
|
476
|
+
def set_necb_external_subsurface_conductance(subsurface, hdd)
|
477
|
+
conductance_value = 0
|
478
|
+
|
479
|
+
if subsurface.outsideBoundaryCondition.downcase.match('outdoors')
|
480
|
+
case subsurface.subSurfaceType.downcase
|
481
|
+
when /window/
|
482
|
+
conductance_value = @standards_data['conductances']['Window'].find { |i| i['hdd'] > hdd }['thermal_transmittance'] * scaling_factor
|
483
|
+
when /door/
|
484
|
+
conductance_value = @standards_data['conductances']['Door'].find { |i| i['hdd'] > hdd }['thermal_transmittance'] * scaling_factor
|
485
|
+
end
|
486
|
+
subsurface.setRSI(1 / conductance_value)
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
# Adds code-minimum constructions based on the building type
|
491
|
+
# as defined in the OpenStudio_Standards_construction_sets.json file.
|
492
|
+
# Where there is a separate construction set specified for the
|
493
|
+
# individual space type, this construction set will be created and applied
|
494
|
+
# to this space type, overriding the whole-building construction set.
|
495
|
+
#
|
496
|
+
# @param building_type [String] the type of building
|
497
|
+
# @param climate_zone [String] the name of the climate zone the building is in
|
498
|
+
# @return [Bool] returns true if successful, false if not
|
499
|
+
def model_add_constructions(model)
|
500
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started applying constructions')
|
501
|
+
|
502
|
+
# Assign construction to adiabatic construction
|
503
|
+
# Assign a material to all internal mass objects
|
504
|
+
assign_contruction_to_adiabatic_surfaces(model)
|
505
|
+
# The constructions lookup table uses a slightly different list of
|
506
|
+
# building types.
|
507
|
+
apply_building_default_constructionset(model)
|
508
|
+
# Make a construction set for each space type, if one is specified
|
509
|
+
# apply_default_constructionsets_to_spacetypes(climate_zone, model)
|
510
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished applying constructions')
|
511
|
+
return true
|
512
|
+
end
|
513
|
+
|
514
|
+
def apply_building_default_constructionset(model)
|
515
|
+
|
516
|
+
bldg_def_const_set = model_add_construction_set_from_osm(model: model)
|
517
|
+
model.getBuilding.setDefaultConstructionSet(bldg_def_const_set)
|
518
|
+
|
519
|
+
end
|
520
|
+
|
521
|
+
def apply_default_constructionsets_to_spacetypes(climate_zone, model)
|
522
|
+
model.getSpaceTypes.sort.each do |space_type|
|
523
|
+
# Get the standards building type
|
524
|
+
stds_building_type = nil
|
525
|
+
if space_type.standardsBuildingType.is_initialized
|
526
|
+
stds_building_type = space_type.standardsBuildingType.get
|
527
|
+
else
|
528
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "Space type called '#{space_type.name}' has no standards building type.")
|
529
|
+
end
|
530
|
+
|
531
|
+
# Get the standards space type
|
532
|
+
stds_spc_type = nil
|
533
|
+
if space_type.standardsSpaceType.is_initialized
|
534
|
+
stds_spc_type = space_type.standardsSpaceType.get
|
535
|
+
else
|
536
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "Space type called '#{space_type.name}' has no standards space type.")
|
537
|
+
end
|
538
|
+
|
539
|
+
# If the standards space type is Attic,
|
540
|
+
# the building type should be blank.
|
541
|
+
if stds_spc_type == 'Attic'
|
542
|
+
stds_building_type = ''
|
543
|
+
end
|
544
|
+
|
545
|
+
# Attempt to make a construction set for this space type
|
546
|
+
# and assign it if it can be created.
|
547
|
+
spc_type_const_set = model_add_construction_set_from_osm(model: model)
|
548
|
+
if spc_type_const_set.is_initialized
|
549
|
+
space_type.setDefaultConstructionSet(spc_type_const_set.get)
|
550
|
+
end
|
551
|
+
end
|
552
|
+
end
|
553
|
+
|
554
|
+
def model_add_construction_set_from_osm(model:,
|
555
|
+
construction_set_name: 'BTAP-Mass',
|
556
|
+
osm_path: File.absolute_path(File.join(__FILE__, '..', '..', 'common/construction_defaults.osm')))
|
557
|
+
# load resources model
|
558
|
+
construction_library = BTAP::FileIO::load_osm(osm_path)
|
559
|
+
|
560
|
+
if not construction_library.getDefaultConstructionSetByName(construction_set_name.to_s).is_initialized
|
561
|
+
runner.registerError('Did not find the expected construction in library.')
|
562
|
+
return false
|
563
|
+
end
|
564
|
+
selected_construction_set = construction_library.getDefaultConstructionSetByName(construction_set_name.to_s).get
|
565
|
+
new_construction_set = selected_construction_set.clone(model).to_DefaultConstructionSet.get
|
566
|
+
return new_construction_set
|
567
|
+
end
|
568
|
+
|
569
|
+
def assign_contruction_to_adiabatic_surfaces(model)
|
570
|
+
cp02_carpet_pad = OpenStudio::Model::MasslessOpaqueMaterial.new(model)
|
571
|
+
cp02_carpet_pad.setName('CP02 CARPET PAD')
|
572
|
+
cp02_carpet_pad.setRoughness('VeryRough')
|
573
|
+
cp02_carpet_pad.setThermalResistance(0.21648)
|
574
|
+
cp02_carpet_pad.setThermalAbsorptance(0.9)
|
575
|
+
cp02_carpet_pad.setSolarAbsorptance(0.7)
|
576
|
+
cp02_carpet_pad.setVisibleAbsorptance(0.8)
|
577
|
+
|
578
|
+
normalweight_concrete_floor = OpenStudio::Model::StandardOpaqueMaterial.new(model)
|
579
|
+
normalweight_concrete_floor.setName('100mm Normalweight concrete floor')
|
580
|
+
normalweight_concrete_floor.setRoughness('MediumSmooth')
|
581
|
+
normalweight_concrete_floor.setThickness(0.1016)
|
582
|
+
normalweight_concrete_floor.setConductivity(2.31)
|
583
|
+
normalweight_concrete_floor.setDensity(2322)
|
584
|
+
normalweight_concrete_floor.setSpecificHeat(832)
|
585
|
+
|
586
|
+
nonres_floor_insulation = OpenStudio::Model::MasslessOpaqueMaterial.new(model)
|
587
|
+
nonres_floor_insulation.setName('Nonres_Floor_Insulation')
|
588
|
+
nonres_floor_insulation.setRoughness('MediumSmooth')
|
589
|
+
nonres_floor_insulation.setThermalResistance(2.88291975297193)
|
590
|
+
nonres_floor_insulation.setThermalAbsorptance(0.9)
|
591
|
+
nonres_floor_insulation.setSolarAbsorptance(0.7)
|
592
|
+
nonres_floor_insulation.setVisibleAbsorptance(0.7)
|
593
|
+
|
594
|
+
floor_adiabatic_construction = OpenStudio::Model::Construction.new(model)
|
595
|
+
floor_adiabatic_construction.setName('Floor Adiabatic construction')
|
596
|
+
floor_layers = OpenStudio::Model::MaterialVector.new
|
597
|
+
floor_layers << cp02_carpet_pad
|
598
|
+
floor_layers << normalweight_concrete_floor
|
599
|
+
floor_layers << nonres_floor_insulation
|
600
|
+
floor_adiabatic_construction.setLayers(floor_layers)
|
601
|
+
|
602
|
+
g01_13mm_gypsum_board = OpenStudio::Model::StandardOpaqueMaterial.new(model)
|
603
|
+
g01_13mm_gypsum_board.setName('G01 13mm gypsum board')
|
604
|
+
g01_13mm_gypsum_board.setRoughness('Smooth')
|
605
|
+
g01_13mm_gypsum_board.setThickness(0.0127)
|
606
|
+
g01_13mm_gypsum_board.setConductivity(0.1600)
|
607
|
+
g01_13mm_gypsum_board.setDensity(800)
|
608
|
+
g01_13mm_gypsum_board.setSpecificHeat(1090)
|
609
|
+
g01_13mm_gypsum_board.setThermalAbsorptance(0.9)
|
610
|
+
g01_13mm_gypsum_board.setSolarAbsorptance(0.7)
|
611
|
+
g01_13mm_gypsum_board.setVisibleAbsorptance(0.5)
|
612
|
+
|
613
|
+
wall_adiabatic_construction = OpenStudio::Model::Construction.new(model)
|
614
|
+
wall_adiabatic_construction.setName('Wall Adiabatic construction')
|
615
|
+
wall_layers = OpenStudio::Model::MaterialVector.new
|
616
|
+
wall_layers << g01_13mm_gypsum_board
|
617
|
+
wall_layers << g01_13mm_gypsum_board
|
618
|
+
wall_adiabatic_construction.setLayers(wall_layers)
|
619
|
+
|
620
|
+
m10_200mm_concrete_block_basement_wall = OpenStudio::Model::StandardOpaqueMaterial.new(model)
|
621
|
+
m10_200mm_concrete_block_basement_wall.setName('M10 200mm concrete block basement wall')
|
622
|
+
m10_200mm_concrete_block_basement_wall.setRoughness('MediumRough')
|
623
|
+
m10_200mm_concrete_block_basement_wall.setThickness(0.2032)
|
624
|
+
m10_200mm_concrete_block_basement_wall.setConductivity(1.326)
|
625
|
+
m10_200mm_concrete_block_basement_wall.setDensity(1842)
|
626
|
+
m10_200mm_concrete_block_basement_wall.setSpecificHeat(912)
|
627
|
+
|
628
|
+
basement_wall_construction = OpenStudio::Model::Construction.new(model)
|
629
|
+
basement_wall_construction.setName('Basement Wall construction')
|
630
|
+
basement_wall_layers = OpenStudio::Model::MaterialVector.new
|
631
|
+
basement_wall_layers << m10_200mm_concrete_block_basement_wall
|
632
|
+
basement_wall_construction.setLayers(basement_wall_layers)
|
633
|
+
|
634
|
+
basement_floor_construction = OpenStudio::Model::Construction.new(model)
|
635
|
+
basement_floor_construction.setName('Basement Floor construction')
|
636
|
+
basement_floor_layers = OpenStudio::Model::MaterialVector.new
|
637
|
+
basement_floor_layers << m10_200mm_concrete_block_basement_wall
|
638
|
+
basement_floor_layers << cp02_carpet_pad
|
639
|
+
basement_floor_construction.setLayers(basement_floor_layers)
|
640
|
+
|
641
|
+
model.getSurfaces.sort.each do |surface|
|
642
|
+
if surface.outsideBoundaryCondition.to_s == 'Adiabatic'
|
643
|
+
if surface.surfaceType.to_s == 'Wall'
|
644
|
+
surface.setConstruction(wall_adiabatic_construction)
|
645
|
+
else
|
646
|
+
surface.setConstruction(floor_adiabatic_construction)
|
647
|
+
end
|
648
|
+
elsif surface.outsideBoundaryCondition.to_s == 'OtherSideCoefficients'
|
649
|
+
# Ground
|
650
|
+
if surface.surfaceType.to_s == 'Wall'
|
651
|
+
surface.setOutsideBoundaryCondition('Ground')
|
652
|
+
surface.setConstruction(basement_wall_construction)
|
653
|
+
else
|
654
|
+
surface.setOutsideBoundaryCondition('Ground')
|
655
|
+
surface.setConstruction(basement_floor_construction)
|
656
|
+
end
|
657
|
+
end
|
658
|
+
end
|
659
|
+
end
|
660
|
+
|
661
|
+
def scale_model_geometry(model, x_scale, y_scale, z_scale)
|
662
|
+
# Identity matrix for setting space origins
|
663
|
+
m = OpenStudio::Matrix.new(4, 4, 0)
|
664
|
+
|
665
|
+
m[0, 0] = 1.0 / x_scale
|
666
|
+
m[1, 1] = 1.0 / y_scale
|
667
|
+
m[2, 2] = 1.0 / z_scale
|
668
|
+
m[3, 3] = 1.0
|
669
|
+
t = OpenStudio::Transformation.new(m)
|
670
|
+
model.getPlanarSurfaceGroups().each do |planar_surface|
|
671
|
+
planar_surface.changeTransformation(t)
|
672
|
+
end
|
673
|
+
return model
|
674
|
+
end
|
675
|
+
|
676
|
+
# This method applies the maximum fenestration and door to wall ratio to a building as per NECB 2011 8.4.4.3 and
|
677
|
+
# 3.2.1.4 (or equivalent in other versions of the NECB). It first checks for al exterior walls adjacent to conditioned
|
678
|
+
# spaces. It distinguishes between plenums and other conditioned spaces. It uses both to calculate the maximum window
|
679
|
+
# area to be applied to the building but attempts to put these windows only on non-plenum conditioned spaces (if
|
680
|
+
# possible).
|
681
|
+
def apply_max_fdwr_nrcan(model:, fdwr_lim:)
|
682
|
+
# First determine which vertical (between 89 and 91 degrees from horizontal) walls are adjacent to conditioned
|
683
|
+
# spaces.
|
684
|
+
exp_surf_info = find_exposed_conditioned_vertical_surfaces(model)
|
685
|
+
# If there are none (or very few) then throw a warning.
|
686
|
+
if exp_surf_info["total_exp_wall_area_m2"] < 0.1
|
687
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Model', "This building has no exposed walls adjacent to heated spaces.")
|
688
|
+
return false
|
689
|
+
end
|
690
|
+
|
691
|
+
construct_set = model.getBuilding.defaultConstructionSet.get
|
692
|
+
fixed_window_construct_set = construct_set.defaultExteriorSubSurfaceConstructions.get.fixedWindowConstruction.get
|
693
|
+
|
694
|
+
# IF FDWR is greater than 1 then something is wrong raise an error. If it is less than 0.001 assume all the windows
|
695
|
+
# should go.
|
696
|
+
if fdwr_lim > 1
|
697
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "This building requires a larger window area than there is wall area.")
|
698
|
+
return false
|
699
|
+
elsif fdwr_lim < 0.001
|
700
|
+
exp_surf_info["exp_nonplenum_walls"].sort.each do |exp_surf|
|
701
|
+
remove_All_Subsurfaces(surface: exp_surf)
|
702
|
+
end
|
703
|
+
return true
|
704
|
+
end
|
705
|
+
# Get the required window area.
|
706
|
+
win_area = fdwr_lim * exp_surf_info["total_exp_wall_area_m2"]
|
707
|
+
# Try to put the windows on non-plenum walls if possible. So determine if you can fit the required window area
|
708
|
+
# on the non-plenum wall area.
|
709
|
+
if win_area <= exp_surf_info["exp_nonplenum_wall_area_m2"]
|
710
|
+
# If you can fit the windows on the non-plenum wall area then recalculate the window ratio so that is is only for
|
711
|
+
# the non-plenum walls.
|
712
|
+
nonplenum_fdwr = win_area / exp_surf_info["exp_nonplenum_wall_area_m2"]
|
713
|
+
exp_surf_info["exp_nonplenum_walls"].sort.each do |exp_surf|
|
714
|
+
# Remove any subsurfaces, add the window, set the name to be whatever the surface name is plus the subsurface
|
715
|
+
# type (which will be 'fixedwindow')
|
716
|
+
remove_All_Subsurfaces(surface: exp_surf)
|
717
|
+
set_Window_To_Wall_Ratio_set_name(surface: exp_surf, area_fraction: nonplenum_fdwr, construction: fixed_window_construct_set)
|
718
|
+
end
|
719
|
+
else
|
720
|
+
# There was not enough non-plenum wall area so add the windows to both the plenum and non-plenum walls. This is
|
721
|
+
# done separately because the 'find_exposed_conditioned_vertical_surfaces' method returns the plenum and
|
722
|
+
# non-plenum walls separately.
|
723
|
+
exp_surf_info["exp_nonplenum_walls"].sort.each do |exp_surf|
|
724
|
+
# Remove any subsurfaces, add the window, set the name to be whatever the surface name is plus the subsurface
|
725
|
+
# type (which will be 'fixedwindow')
|
726
|
+
remove_All_Subsurfaces(surface: exp_surf)
|
727
|
+
set_Window_To_Wall_Ratio_set_name(surface: exp_surf, area_fraction: fdwr_lim, construction: fixed_window_construct_set)
|
728
|
+
end
|
729
|
+
exp_surf_info["exp_plenum_walls"].sort.each do |exp_surf|
|
730
|
+
# Remove any subsurfaces, add the window, set the name to be whatever the surface name is plus the subsurface
|
731
|
+
# type (which will be 'fixedwindow')
|
732
|
+
remove_All_Subsurfaces(surface: exp_surf)
|
733
|
+
set_Window_To_Wall_Ratio_set_name(surface: exp_surf, area_fraction: fdwr_lim, construction: fixed_window_construct_set)
|
734
|
+
end
|
735
|
+
end
|
736
|
+
return true
|
737
|
+
end
|
738
|
+
|
739
|
+
# This method is similar to the 'apply_max_fdwr' method above but applies the maximum skylight to roof area ratio to a
|
740
|
+
# building as per NECB 2011 8.4.4.3 and 3.2.1.4 (or equivalent in other versions of the NECB). It first checks for all
|
741
|
+
# exterior roofs adjacent to conditioned spaces. It distinguishes between plenums and other conditioned spaces. It
|
742
|
+
# uses only the non-plenum roof area to calculate the maximum skylight area to be applied to the building.
|
743
|
+
def apply_max_srr_nrcan(model:, srr_lim:)
|
744
|
+
# First determine which roof surfaces are adjacent to heated spaces (both plenum and non-plenum).
|
745
|
+
exp_surf_info = find_exposed_conditioned_roof_surfaces(model)
|
746
|
+
# If the non-plenum roof area is very small raise a warning. It may be perfectly fine but it is probably a good
|
747
|
+
# idea to warn the user.
|
748
|
+
if exp_surf_info["exp_nonplenum_roof_area_m2"] < 0.1
|
749
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "This building has no exposed ceilings adjacent to spaces that are not attics or plenums. No skylights will be added.")
|
750
|
+
return false
|
751
|
+
end
|
752
|
+
|
753
|
+
# If the SRR is greater than one something is seriously wrong so raise an error. If it is less than 0.001 assume
|
754
|
+
# all the skylights should go.
|
755
|
+
if srr_lim > 1
|
756
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "This building requires a larger skylight area than there is roof area.")
|
757
|
+
return false
|
758
|
+
elsif srr_lim < 0.001
|
759
|
+
exp_surf_info["exp_nonplenum_roofs"].sort.each do |exp_surf|
|
760
|
+
remove_All_Subsurfaces(surface: exp_surf)
|
761
|
+
end
|
762
|
+
return true
|
763
|
+
end
|
764
|
+
|
765
|
+
construct_set = model.getBuilding.defaultConstructionSet.get
|
766
|
+
skylight_construct_set = construct_set.defaultExteriorSubSurfaceConstructions.get.skylightConstruction.get
|
767
|
+
|
768
|
+
# Go through all of exposed roofs adjacent to heated, non-plenum spaces, remove any existing subsurfaces, and add
|
769
|
+
# a skylight in the centroid of the surface, with the same shape of the surface, only scaled to be the area
|
770
|
+
# determined by the SRR. The name of the skylight will be the surface name with the subsurface type attached
|
771
|
+
# ('skylight' in this case). Note that this method will only work if the surface does not fold into itself (like an
|
772
|
+
# L or a V).
|
773
|
+
exp_surf_info["exp_nonplenum_roofs"].sort.each do |roof|
|
774
|
+
# sub_surface_create_centered_subsurface_from_scaled_surface(roof, srr_lim, model)
|
775
|
+
sub_surface_create_scaled_subsurfaces_from_surface(surface: roof, area_fraction: srr_lim, model: model, consturction: skylight_construct_set)
|
776
|
+
end
|
777
|
+
return true
|
778
|
+
end
|
779
|
+
end
|