openstudio-standards 0.3.0 → 0.3.1.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/ASHRAESuperMarket.json +29 -38
- data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
- data/data/standards/metadata_units_OpenStudio_Standards-deer-ALL-comstockspace_types.csv +172 -0
- data/data/standards/test_performance_expected_dd_results.csv +12 -12
- data/lib/openstudio-standards/btap/analysis.rb +389 -389
- data/lib/openstudio-standards/btap/bridging.rb +2099 -0
- data/lib/openstudio-standards/btap/btap.model.rb +717 -717
- data/lib/openstudio-standards/btap/btap.rb +33 -30
- data/lib/openstudio-standards/btap/economics.rb +1163 -1163
- data/lib/openstudio-standards/btap/envelope.rb +4 -4
- data/lib/openstudio-standards/btap/equest.rb +2524 -2524
- data/lib/openstudio-standards/btap/fileio.rb +9 -0
- data/lib/openstudio-standards/btap/measures.rb +1515 -1515
- data/lib/openstudio-standards/btap/mpc.rb +554 -554
- data/lib/openstudio-standards/btap/reporting.rb +287 -287
- data/lib/openstudio-standards/btap/simmanager.rb +759 -759
- data/lib/openstudio-standards/btap/spaceloads.rb +439 -439
- data/lib/openstudio-standards/btap/spacetypes.rb +113 -113
- data/lib/openstudio-standards/btap/utilities.rb +134 -134
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +8 -83
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingWater.rb +3 -99
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +81 -75
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +7 -306
- data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +70 -98
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +41 -14
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +40 -14
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +1 -23
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +93 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +13 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +5 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +24 -4
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +18 -2
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +18 -0
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +13 -10
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +5 -3
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +11 -8
- data/lib/openstudio-standards/standards/Standards.Construction.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Model.rb +68 -52
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.Space.rb +16 -18
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_cases.json +510 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_compressors.json +18 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_walkins.json +410 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_cases.json +510 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_compressors.json +18 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_walkins.json +410 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_cases.json +510 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_compressors.json +18 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_walkins.json +410 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_cases.json +510 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_compressors.json +18 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_walkins.json +410 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +2 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +4 -3
- data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb +21 -0
- data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb +21 -0
- data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +21 -0
- data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +21 -0
- data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +21 -0
- data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +21 -0
- data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/data/comstock_deer_2020.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +8 -0
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +21 -0
- data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/data/comstock_deer_2025.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/data/comstock_deer_2030.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/data/comstock_deer_2035.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/data/comstock_deer_2040.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/data/comstock_deer_2045.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/data/comstock_deer_2050.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/data/comstock_deer_2055.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/data/comstock_deer_2060.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/data/comstock_deer_2065.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/data/comstock_deer_2070.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/data/comstock_deer_2075.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.spc_typ.json +405 -405
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +1 -1
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +3 -1
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +3 -1
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +2 -2
- data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +233 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/unitary_acs.json +180 -0
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +6 -1
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +807 -258
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +102 -66
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +85 -8
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/HighriseApartment.osm +2483 -992
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LowriseApartment.osm +4 -336
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/MidriseApartment.osm +228 -231
- data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +12 -18
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_type_unit_definitions.txt +76 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +6 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +111 -24
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +1 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +3 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +64 -16
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +61 -17
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +128 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +252 -23
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +316 -20
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +3 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +38 -0
- data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +16 -24
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +48 -25
- data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +3 -3
- data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +36 -19
- data/lib/openstudio-standards/standards/necb/NECB2020/data/furnaces.json +19 -4
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps.json +20 -40
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +74 -36
- data/lib/openstudio-standards/standards/necb/NECB2020/necb_2020.rb +0 -2
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +123 -56
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +124 -2
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +15 -2
- data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +1 -1
- data/lib/openstudio-standards/utilities/simulation.rb +1 -1
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +33 -1
- data/lib/openstudio-standards.rb +1 -0
- metadata +14 -121
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/weather/CAN_ON_Kingston.AP.718200_TMYx.2004-2018.ddy +0 -2342
- data/data/weather/CAN_ON_Kingston.AP.718200_TMYx.2004-2018.epw +0 -8768
- data/data/weather/CAN_ON_Kingston.AP.718200_TMYx.2004-2018.stat +0 -700
- data/data/weather/CAN_ON_Region.of.Waterloo.Intl.AP.713680_TMYx.2004-2018.ddy +0 -2342
- data/data/weather/CAN_ON_Region.of.Waterloo.Intl.AP.713680_TMYx.2004-2018.epw +0 -8768
- data/data/weather/CAN_ON_Region.of.Waterloo.Intl.AP.713680_TMYx.2004-2018.stat +0 -700
- data/data/weather/CAN_ON_Sarnia-Hadfield.AP.717040_TMYx.2004-2018.ddy +0 -2342
- data/data/weather/CAN_ON_Sarnia-Hadfield.AP.717040_TMYx.2004-2018.epw +0 -8768
- data/data/weather/CAN_ON_Sarnia-Hadfield.AP.717040_TMYx.2004-2018.stat +0 -700
- data/data/weather/CAN_QC_Gatineau.AP.716279_TMYx.2004-2018.ddy +0 -276
- data/data/weather/CAN_QC_Gatineau.AP.716279_TMYx.2004-2018.epw +0 -8768
- data/data/weather/CAN_QC_Gatineau.AP.716279_TMYx.2004-2018.stat +0 -611
- data/data/weather/CAN_QC_Granby.710367_TMYx.2004-2018.ddy +0 -276
- data/data/weather/CAN_QC_Granby.710367_TMYx.2004-2018.epw +0 -8768
- data/data/weather/CAN_QC_Granby.710367_TMYx.2004-2018.stat +0 -610
- data/data/weather/CAN_QC_Sherbrooke.AP.716100_TMYx.2004-2018.ddy +0 -2342
- data/data/weather/CAN_QC_Sherbrooke.AP.716100_TMYx.2004-2018.epw +0 -8768
- data/data/weather/CAN_QC_Sherbrooke.AP.716100_TMYx.2004-2018.stat +0 -700
- data/data/weather/CAN_QC_Trois.Rivieres.717240_TMYx.2004-2018.ddy +0 -2342
- data/data/weather/CAN_QC_Trois.Rivieres.717240_TMYx.2004-2018.epw +0 -8768
- data/data/weather/CAN_QC_Trois.Rivieres.717240_TMYx.2004-2018.stat +0 -700
- data/lib/openstudio-standards/hvac_sizing/Siz.AirConditionerVariableRefrigerantFlow.rb +0 -81
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVACUnitaryHeatCoolVAVChngByp.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVACUnitaryHeatPumpAirToAir.rb +0 -69
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +0 -178
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVACUnitarySystem.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctConstVolCooledBeam.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctConstVolFourPipeInduction.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctConstVolReheat.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctParallelPIUReheat.rb +0 -67
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctSeriesPIUReheat.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctUncontrolled.rb +0 -30
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVHeatAndCoolNoReheat.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVHeatAndCoolReheat.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVNoReheat.rb +0 -68
- data/lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVReheat.rb +0 -68
- data/lib/openstudio-standards/hvac_sizing/Siz.BoilerHotWater.rb +0 -42
- data/lib/openstudio-standards/hvac_sizing/Siz.BoilerSteam.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ChillerElectricEIR.rb +0 -58
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingDXMultiSpeed.rb +0 -171
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingDXSingleSpeed.rb +0 -56
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingDXTwoSpeed.rb +0 -89
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingDXVariableRefrigerantFlow.rb +0 -50
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -69
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingDXMultiSpeed.rb +0 -120
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingDXSingleSpeed.rb +0 -56
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingDXVariableRefrigerantFlow.rb +0 -41
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingDesuperheater.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingElectric.rb +0 -30
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingGas.rb +0 -30
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingGasMultiStage.rb +0 -68
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingWater.rb +0 -61
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -57
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilWaterHeatingDesuperheater.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ControllerOutdoorAir.rb +0 -59
- data/lib/openstudio-standards/hvac_sizing/Siz.ControllerWaterCoil.rb +0 -49
- data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerSingleSpeed.rb +0 -90
- data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerTwoSpeed.rb +0 -83
- data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerVariableSpeed.rb +0 -57
- data/lib/openstudio-standards/hvac_sizing/Siz.DistrictCooling.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.DistrictHeating.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.EvaporativeCoolerDirectResearchSpecial.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.EvaporativeCoolerIndirectResearchSpecial.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.EvaporativeFluidCoolerSingleSpeed.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.FanConstantVolume.rb +0 -29
- data/lib/openstudio-standards/hvac_sizing/Siz.FanOnOff.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.FanVariableVolume.rb +0 -29
- data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsConstantSpeed.rb +0 -55
- data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsVariableSpeed.rb +0 -55
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatExchangerAirToAirSensibleAndLatent.rb +0 -38
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatExchangerFluidToFluid.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.HumidifierSteamElectric.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.PlantLoop.rb +0 -42
- data/lib/openstudio-standards/hvac_sizing/Siz.PumpConstantSpeed.rb +0 -59
- data/lib/openstudio-standards/hvac_sizing/Siz.PumpVariableSpeed.rb +0 -59
- data/lib/openstudio-standards/hvac_sizing/Siz.SizingSystem.rb +0 -48
- data/lib/openstudio-standards/hvac_sizing/Siz.WaterHeaterMixed.rb +0 -16
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACBaseboardConvectiveElectric.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACBaseboardConvectiveWater.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACFourPipeFanCoil.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACHighTemperatureRadiant.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACIdealLoadsAirSystem.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACLowTempRadiantConstFlow.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACLowTempRadiantVarFlow.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACLowTemperatureRadiantElectric.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACPackagedTerminalAirConditioner.rb +0 -88
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACPackagedTerminalHeatPump.rb +0 -88
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +0 -104
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACUnitHeater.rb +0 -27
- data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACWaterToAirHeatPump.rb +0 -27
@@ -208,7 +208,7 @@ class Standard
|
|
208
208
|
# Add daylighting controls for 90.1-2013 and prior
|
209
209
|
# Remove daylighting control for 90.1-PRM-2019 and onward
|
210
210
|
model.getSpaces.sort.each do |space|
|
211
|
-
space_set_baseline_daylighting_controls(space,
|
211
|
+
space_set_baseline_daylighting_controls(space, true, false)
|
212
212
|
end
|
213
213
|
|
214
214
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', '*** Applying Baseline Constructions ***')
|
@@ -455,66 +455,61 @@ class Standard
|
|
455
455
|
if unmet_load_hours_check
|
456
456
|
nb_adjustments = 0
|
457
457
|
loop do
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
#
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
break
|
469
|
-
end
|
470
|
-
model.getThermalZones.each do |thermal_zone|
|
471
|
-
# Cooling adjustments
|
472
|
-
clg_umlh = thermal_zone_get_unmet_load_hours(thermal_zone, 'Cooling')
|
473
|
-
if clg_umlh > 50
|
474
|
-
# Get zone cooling sizing factor
|
475
|
-
if thermal_zone.sizingZone.zoneCoolingSizingFactor.is_initialized
|
476
|
-
sizing_factor = thermal_zone.sizingZone.zoneCoolingSizingFactor.get
|
477
|
-
else
|
478
|
-
sizing_factor = 1.0
|
479
|
-
end
|
458
|
+
# Loop break condition: Limit the number of zone sizing factor adjustment to 3
|
459
|
+
unless nb_adjustments < 3
|
460
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "After 3 rounds of zone sizing factor adjustments the unmet load hours for the baseline model (#{degs} degree of rotation) still exceed 300 hours. Please open an issue on GitHub (https://github.com/NREL/openstudio-standards/issues) and share your user model with the developers.")
|
461
|
+
break
|
462
|
+
end
|
463
|
+
# Close the previous SQL session if open to prevent EnergyPlus from overloading the same session
|
464
|
+
sql = model.sqlFile.get
|
465
|
+
if sql.connectionOpen
|
466
|
+
sql.close
|
467
|
+
end
|
480
468
|
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
469
|
+
if model_run_simulation_and_log_errors(model, "#{sizing_run_dir}/final#{degs}")
|
470
|
+
# If UMLH are greater than the threshold allowed by Appendix G,
|
471
|
+
# increase zone air flow and load as per the recommendation in
|
472
|
+
# the PRM-RM; Note that the PRM-RM only suggest to increase
|
473
|
+
# air zone air flow, but the zone sizing factor in EnergyPlus
|
474
|
+
# increase both air flow and load.
|
475
|
+
if model_get_unmet_load_hours(model) > 300
|
476
|
+
model.getThermalZones.each do |thermal_zone|
|
477
|
+
# Cooling adjustments
|
478
|
+
clg_umlh = thermal_zone_get_unmet_load_hours(thermal_zone, 'Cooling')
|
479
|
+
if clg_umlh > 50
|
480
|
+
sizing_factor = 1.0
|
481
|
+
if thermal_zone.sizingZone.zoneCoolingSizingFactor.is_initialized
|
482
|
+
sizing_factor = thermal_zone.sizingZone.zoneCoolingSizingFactor.get
|
488
483
|
end
|
484
|
+
# Make adjustment to zone cooling sizing factor
|
485
|
+
# Do not adjust factors greater or equal to 2
|
486
|
+
clg_umlh > 150 ? sizing_factor = [2.0, sizing_factor * 1.1].min : sizing_factor = [2.0, sizing_factor * 1.05].min
|
489
487
|
thermal_zone.sizingZone.setZoneCoolingSizingFactor(sizing_factor)
|
490
488
|
end
|
491
|
-
end
|
492
489
|
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
if thermal_zone.sizingZone.zoneHeatingSizingFactor.is_initialized
|
498
|
-
sizing_factor = thermal_zone.sizingZone.zoneHeatingSizingFactor.get
|
499
|
-
else
|
490
|
+
# Heating adjustments
|
491
|
+
# Reset sizing factor
|
492
|
+
htg_umlh = thermal_zone_get_unmet_load_hours(thermal_zone, 'Heating')
|
493
|
+
if htg_umlh > 50
|
500
494
|
sizing_factor = 1.0
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
# Do not adjust factors greater or equal to 2
|
505
|
-
if sizing_factor < 2.0
|
506
|
-
if htg_umlh > 150
|
507
|
-
sizing_factor *= 1.1
|
508
|
-
elsif htg_umlh > 50
|
509
|
-
sizing_factor *= 1.05
|
495
|
+
if thermal_zone.sizingZone.zoneHeatingSizingFactor.is_initialized
|
496
|
+
# Get zone heating sizing factor
|
497
|
+
sizing_factor = thermal_zone.sizingZone.zoneHeatingSizingFactor.get
|
510
498
|
end
|
499
|
+
|
500
|
+
# Make adjustment to zone heating sizing factor
|
501
|
+
# Do not adjust factors greater or equal to 2
|
502
|
+
htg_umlh > 150 ? sizing_factor = [2.0, sizing_factor * 1.1].min : sizing_factor = [2.0, sizing_factor * 1.05].min
|
511
503
|
thermal_zone.sizingZone.setZoneHeatingSizingFactor(sizing_factor)
|
512
504
|
end
|
513
505
|
end
|
514
506
|
end
|
515
507
|
else
|
516
|
-
|
508
|
+
# simulation failure, raise the exception.
|
509
|
+
# OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', 'OpenStudio simulation failed.')
|
510
|
+
raise('OpenStudio simulation failed.')
|
517
511
|
end
|
512
|
+
nb_adjustments += 1
|
518
513
|
end
|
519
514
|
end
|
520
515
|
end
|
@@ -2265,8 +2260,9 @@ class Standard
|
|
2265
2260
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
2266
2261
|
# @param apply_controls [Bool] toggle whether to apply air loop and plant loop controls
|
2267
2262
|
# @param sql_db_vars_map [Hash] hash map
|
2263
|
+
# @param necb_ref_hp [Bool] for compatability with NECB ruleset only.
|
2268
2264
|
# @return [Bool] returns true if successful, false if not
|
2269
|
-
def model_apply_hvac_efficiency_standard(model, climate_zone, apply_controls: true, sql_db_vars_map: nil)
|
2265
|
+
def model_apply_hvac_efficiency_standard(model, climate_zone, apply_controls: true, sql_db_vars_map: nil, necb_ref_hp: false)
|
2270
2266
|
sql_db_vars_map = {} if sql_db_vars_map.nil?
|
2271
2267
|
|
2272
2268
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Started applying HVAC efficiency standards for #{template} template.")
|
@@ -2302,11 +2298,11 @@ class Standard
|
|
2302
2298
|
# set DX HP coils before DX clg coils because when DX HP coils need to first
|
2303
2299
|
# pull the capacities of their paired DX clg coils, and this does not work
|
2304
2300
|
# correctly if the DX clg coil efficiencies have been set because they are renamed.
|
2305
|
-
model.getCoilHeatingDXSingleSpeeds.sort.each { |obj| sql_db_vars_map = coil_heating_dx_single_speed_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
2301
|
+
model.getCoilHeatingDXSingleSpeeds.sort.each { |obj| sql_db_vars_map = coil_heating_dx_single_speed_apply_efficiency_and_curves(obj, sql_db_vars_map, necb_ref_hp) }
|
2306
2302
|
|
2307
2303
|
# Unitary ACs
|
2308
2304
|
model.getCoilCoolingDXTwoSpeeds.sort.each { |obj| sql_db_vars_map = coil_cooling_dx_two_speed_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
2309
|
-
model.getCoilCoolingDXSingleSpeeds.sort.each { |obj| sql_db_vars_map = coil_cooling_dx_single_speed_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
2305
|
+
model.getCoilCoolingDXSingleSpeeds.sort.each { |obj| sql_db_vars_map = coil_cooling_dx_single_speed_apply_efficiency_and_curves(obj, sql_db_vars_map, necb_ref_hp) }
|
2310
2306
|
model.getCoilCoolingDXMultiSpeeds.sort.each { |obj| sql_db_vars_map = coil_cooling_dx_multi_speed_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
2311
2307
|
|
2312
2308
|
# WSHPs
|
@@ -2355,7 +2351,7 @@ class Standard
|
|
2355
2351
|
|
2356
2352
|
# Add daylighting controls to each space
|
2357
2353
|
model.getSpaces.sort.each do |space|
|
2358
|
-
added = space_add_daylighting_controls(space,
|
2354
|
+
added = space_add_daylighting_controls(space, true, false)
|
2359
2355
|
end
|
2360
2356
|
|
2361
2357
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished adding daylighting controls.')
|
@@ -3587,6 +3583,7 @@ class Standard
|
|
3587
3583
|
existing_curves += model.getCurveQuadratics
|
3588
3584
|
existing_curves += model.getCurveBicubics
|
3589
3585
|
existing_curves += model.getCurveBiquadratics
|
3586
|
+
existing_curves += model.getCurveQuadLinears
|
3590
3587
|
existing_curves.sort.each do |curve|
|
3591
3588
|
if curve.name.get.to_s == curve_name
|
3592
3589
|
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.Model', "Already added curve: #{curve_name}")
|
@@ -3687,6 +3684,25 @@ class Standard
|
|
3687
3684
|
curve.setMinimumCurveOutput(data['minimum_dependent_variable_output']) if data['minimum_dependent_variable_output']
|
3688
3685
|
curve.setMaximumCurveOutput(data['maximum_dependent_variable_output']) if data['maximum_dependent_variable_output']
|
3689
3686
|
return curve
|
3687
|
+
when 'QuadLinear'
|
3688
|
+
curve = OpenStudio::Model::CurveQuadLinear.new(model)
|
3689
|
+
curve.setName(data['name'])
|
3690
|
+
curve.setCoefficient1Constant(data['coeff_1'])
|
3691
|
+
curve.setCoefficient2w(data['coeff_2'])
|
3692
|
+
curve.setCoefficient3x(data['coeff_3'])
|
3693
|
+
curve.setCoefficient4y(data['coeff_4'])
|
3694
|
+
curve.setCoefficient5z(data['coeff_5'])
|
3695
|
+
curve.setMinimumValueofw(data['minimum_independent_variable_w'])
|
3696
|
+
curve.setMaximumValueofw(data['maximum_independent_variable_w'])
|
3697
|
+
curve.setMinimumValueofx(data['minimum_independent_variable_x'])
|
3698
|
+
curve.setMaximumValueofx(data['maximum_independent_variable_x'])
|
3699
|
+
curve.setMinimumValueofy(data['minimum_independent_variable_y'])
|
3700
|
+
curve.setMaximumValueofy(data['maximum_independent_variable_y'])
|
3701
|
+
curve.setMinimumValueofz(data['minimum_independent_variable_z'])
|
3702
|
+
curve.setMaximumValueofz(data['maximum_independent_variable_z'])
|
3703
|
+
curve.setMinimumCurveOutput(data['minimum_dependent_variable_output'])
|
3704
|
+
curve.setMaximumCurveOutput(data['maximum_dependent_variable_output'])
|
3705
|
+
return curve
|
3690
3706
|
when 'MultiVariableLookupTable'
|
3691
3707
|
num_ind_var = data['number_independent_variables'].to_i
|
3692
3708
|
table = OpenStudio::Model::TableMultiVariableLookup.new(model, num_ind_var)
|
@@ -945,11 +945,11 @@ class Standard
|
|
945
945
|
final_boilers = [first_boiler, second_boiler]
|
946
946
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.PlantLoop', "For #{plant_loop.name}, added a second boiler.")
|
947
947
|
|
948
|
-
#
|
948
|
+
# Rename boilers and set the sizing factor
|
949
949
|
sizing_factor = (1.0 / final_boilers.size).round(2)
|
950
950
|
final_boilers.each_with_index do |boiler, i|
|
951
|
+
boiler.setName("#{plant_loop.name} Boiler #{i + 1} of #{final_boilers.size}")
|
951
952
|
boiler.setSizingFactor(sizing_factor)
|
952
|
-
boiler.setName("#{first_boiler.name} #{i + 1} of #{final_boilers.size}")
|
953
953
|
end
|
954
954
|
|
955
955
|
# Set the equipment to stage sequentially
|
@@ -835,12 +835,22 @@ class Standard
|
|
835
835
|
def space_add_daylighting_controls(space, remove_existing_controls, draw_daylight_areas_for_debugging = false)
|
836
836
|
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.Space', "******For #{space.name}, adding daylight controls.")
|
837
837
|
|
838
|
+
# Get the space thermal zone
|
839
|
+
zone = space.thermalZone
|
840
|
+
if zone.empty?
|
841
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Space', "Space #{space.name} has no thermal zone; cannot set daylighting controls for zone.")
|
842
|
+
else
|
843
|
+
zone = zone.get
|
844
|
+
end
|
845
|
+
|
838
846
|
# Check for existing daylighting controls
|
839
847
|
# and remove if specified in the input
|
840
848
|
existing_daylighting_controls = space.daylightingControls
|
841
849
|
unless existing_daylighting_controls.empty?
|
842
850
|
if remove_existing_controls
|
843
851
|
space_remove_daylighting_controls(space)
|
852
|
+
zone.resetFractionofZoneControlledbyPrimaryDaylightingControl
|
853
|
+
zone.resetFractionofZoneControlledbySecondaryDaylightingControl
|
844
854
|
else
|
845
855
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Space', "For #{space.name}, daylight controls were already present, no additional controls added.")
|
846
856
|
return false
|
@@ -1037,14 +1047,6 @@ class Standard
|
|
1037
1047
|
end
|
1038
1048
|
end
|
1039
1049
|
|
1040
|
-
# Get the zone that the space is in
|
1041
|
-
zone = space.thermalZone
|
1042
|
-
if zone.empty?
|
1043
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Space', "Space #{space.name} has no thermal zone")
|
1044
|
-
else
|
1045
|
-
zone = zone.get
|
1046
|
-
end
|
1047
|
-
|
1048
1050
|
# Sort by priority; first by facade, then by area,
|
1049
1051
|
# then by name to ensure deterministic in case identical in other ways
|
1050
1052
|
sorted_windows = windows.sort_by { |_window, vals| [vals[:facade], vals[:area], vals[:name]] }
|
@@ -1079,16 +1081,6 @@ class Standard
|
|
1079
1081
|
sensor_2_frac *= ssa_nongeo_frac unless ssa_nongeo_frac.nil?
|
1080
1082
|
end
|
1081
1083
|
|
1082
|
-
# Place the sensors and set control fractions
|
1083
|
-
# get the zone that the space is in
|
1084
|
-
zone = space.thermalZone
|
1085
|
-
if zone.empty?
|
1086
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Space', "Space #{space.name}, cannot determine daylighted areas.")
|
1087
|
-
return false
|
1088
|
-
else
|
1089
|
-
zone = space.thermalZone.get
|
1090
|
-
end
|
1091
|
-
|
1092
1084
|
# Ensure that total controlled fraction
|
1093
1085
|
# is never set above 1 (100%)
|
1094
1086
|
sensor_1_frac = sensor_1_frac.round(3)
|
@@ -1149,6 +1141,9 @@ class Standard
|
|
1149
1141
|
|
1150
1142
|
# @todo rotate sensor to face window (only needed for glare calcs)
|
1151
1143
|
zone.setPrimaryDaylightingControl(sensor_1)
|
1144
|
+
if zone.fractionofZoneControlledbyPrimaryDaylightingControl + sensor_1_frac > 1
|
1145
|
+
zone.resetFractionofZoneControlledbySecondaryDaylightingControl
|
1146
|
+
end
|
1152
1147
|
zone.setFractionofZoneControlledbyPrimaryDaylightingControl(sensor_1_frac)
|
1153
1148
|
end
|
1154
1149
|
|
@@ -1191,6 +1186,9 @@ class Standard
|
|
1191
1186
|
|
1192
1187
|
# @todo rotate sensor to face window (only needed for glare calcs)
|
1193
1188
|
zone.setSecondaryDaylightingControl(sensor_2)
|
1189
|
+
if zone.fractionofZoneControlledbySecondaryDaylightingControl + sensor_2_frac > 1
|
1190
|
+
zone.resetFractionofZoneControlledbyPrimaryDaylightingControl
|
1191
|
+
end
|
1194
1192
|
zone.setFractionofZoneControlledbySecondaryDaylightingControl(sensor_2_frac)
|
1195
1193
|
end
|
1196
1194
|
|