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
@@ -7,7 +7,6 @@
|
|
7
7
|
],
|
8
8
|
"table": [
|
9
9
|
{
|
10
|
-
|
11
10
|
"cooling_type": "AirCooled",
|
12
11
|
"subcategory": "Single Package",
|
13
12
|
"minimum_capacity": 0.0,
|
@@ -15,8 +14,8 @@
|
|
15
14
|
"start_date": "9/9/1919",
|
16
15
|
"end_date": "2999-09-09T00:00:00+00:00",
|
17
16
|
"minimum_heating_seasonal_performance_factor": null,
|
18
|
-
"minimum_coefficient_of_performance_heating":
|
19
|
-
"minimum_energy_efficiency_ratio":
|
17
|
+
"minimum_coefficient_of_performance_heating": 3.1,
|
18
|
+
"minimum_energy_efficiency_ratio": null,
|
20
19
|
"pthp_cop_coefficient_1": null,
|
21
20
|
"pthp_cop_coefficient_2": null,
|
22
21
|
"heat_cap_ft": "DXHEAT-NECB2011-REF-CAPFT",
|
@@ -27,7 +26,6 @@
|
|
27
26
|
"notes": "From NECB 2011, Table 5.2.12.1"
|
28
27
|
},
|
29
28
|
{
|
30
|
-
|
31
29
|
"cooling_type": "AirCooled",
|
32
30
|
"subcategory": "Split System",
|
33
31
|
"minimum_capacity": 0.0,
|
@@ -35,8 +33,8 @@
|
|
35
33
|
"start_date": "9/9/1919",
|
36
34
|
"end_date": "2999-09-09T00:00:00+00:00",
|
37
35
|
"minimum_heating_seasonal_performance_factor": null,
|
38
|
-
"minimum_coefficient_of_performance_heating":
|
39
|
-
"minimum_energy_efficiency_ratio":
|
36
|
+
"minimum_coefficient_of_performance_heating": 3.1,
|
37
|
+
"minimum_energy_efficiency_ratio": null,
|
40
38
|
"pthp_cop_coefficient_1": null,
|
41
39
|
"pthp_cop_coefficient_2": null,
|
42
40
|
"heat_cap_ft": "DXHEAT-NECB2011-REF-CAPFT",
|
@@ -47,7 +45,6 @@
|
|
47
45
|
"notes": "From NECB 2011, Table 5.2.12.1"
|
48
46
|
},
|
49
47
|
{
|
50
|
-
|
51
48
|
"cooling_type": "AirCooled",
|
52
49
|
"subcategory": "Single Package",
|
53
50
|
"minimum_capacity": 65001.0,
|
@@ -55,8 +52,8 @@
|
|
55
52
|
"start_date": "9/9/1919",
|
56
53
|
"end_date": "2999-09-09T00:00:00+00:00",
|
57
54
|
"minimum_heating_seasonal_performance_factor": null,
|
58
|
-
"minimum_coefficient_of_performance_heating":
|
59
|
-
"minimum_energy_efficiency_ratio":
|
55
|
+
"minimum_coefficient_of_performance_heating": 3.3,
|
56
|
+
"minimum_energy_efficiency_ratio": null,
|
60
57
|
"pthp_cop_coefficient_1": null,
|
61
58
|
"pthp_cop_coefficient_2": null,
|
62
59
|
"heat_cap_ft": "DXHEAT-NECB2011-REF-CAPFT",
|
@@ -67,7 +64,6 @@
|
|
67
64
|
"notes": "From NECB 2011, Table 5.2.12.1"
|
68
65
|
},
|
69
66
|
{
|
70
|
-
|
71
67
|
"cooling_type": "AirCooled",
|
72
68
|
"subcategory": "Split System",
|
73
69
|
"minimum_capacity": 65001.0,
|
@@ -75,8 +71,8 @@
|
|
75
71
|
"start_date": "9/9/1919",
|
76
72
|
"end_date": "2999-09-09T00:00:00+00:00",
|
77
73
|
"minimum_heating_seasonal_performance_factor": null,
|
78
|
-
"minimum_coefficient_of_performance_heating":
|
79
|
-
"minimum_energy_efficiency_ratio":
|
74
|
+
"minimum_coefficient_of_performance_heating": 3.3,
|
75
|
+
"minimum_energy_efficiency_ratio": null,
|
80
76
|
"pthp_cop_coefficient_1": null,
|
81
77
|
"pthp_cop_coefficient_2": null,
|
82
78
|
"heat_cap_ft": "DXHEAT-NECB2011-REF-CAPFT",
|
@@ -87,7 +83,6 @@
|
|
87
83
|
"notes": "From NECB 2011, Table 5.2.12.1"
|
88
84
|
},
|
89
85
|
{
|
90
|
-
|
91
86
|
"cooling_type": "AirCooled",
|
92
87
|
"subcategory": "Single Package",
|
93
88
|
"minimum_capacity": 238841.0,
|
@@ -95,8 +90,8 @@
|
|
95
90
|
"start_date": "9/9/1919",
|
96
91
|
"end_date": "2999-09-09T00:00:00+00:00",
|
97
92
|
"minimum_heating_seasonal_performance_factor": null,
|
98
|
-
"minimum_coefficient_of_performance_heating":
|
99
|
-
"minimum_energy_efficiency_ratio":
|
93
|
+
"minimum_coefficient_of_performance_heating": 3.2,
|
94
|
+
"minimum_energy_efficiency_ratio": null,
|
100
95
|
"pthp_cop_coefficient_1": null,
|
101
96
|
"pthp_cop_coefficient_2": null,
|
102
97
|
"heat_cap_ft": "DXHEAT-NECB2011-REF-CAPFT",
|
@@ -107,7 +102,6 @@
|
|
107
102
|
"notes": "From NECB 2011, Table 5.2.12.1"
|
108
103
|
},
|
109
104
|
{
|
110
|
-
|
111
105
|
"cooling_type": "AirCooled",
|
112
106
|
"subcategory": "Split System",
|
113
107
|
"minimum_capacity": 238841.0,
|
@@ -115,8 +109,8 @@
|
|
115
109
|
"start_date": "9/9/1919",
|
116
110
|
"end_date": "2999-09-09T00:00:00+00:00",
|
117
111
|
"minimum_heating_seasonal_performance_factor": null,
|
118
|
-
"minimum_coefficient_of_performance_heating":
|
119
|
-
"minimum_energy_efficiency_ratio":
|
112
|
+
"minimum_coefficient_of_performance_heating": 3.2,
|
113
|
+
"minimum_energy_efficiency_ratio": null,
|
120
114
|
"pthp_cop_coefficient_1": null,
|
121
115
|
"pthp_cop_coefficient_2": null,
|
122
116
|
"heat_cap_ft": "DXHEAT-NECB2011-REF-CAPFT",
|
@@ -0,0 +1,76 @@
|
|
1
|
+
"building_type":
|
2
|
+
"space_type":
|
3
|
+
"rgb":
|
4
|
+
"lighting_standard":
|
5
|
+
"lighting_primary_space_type":
|
6
|
+
"lighting_secondary_space_type":
|
7
|
+
"lighting_per_area": W/ft^2
|
8
|
+
"lighting_per_person": W/person
|
9
|
+
"additional_lighting_per_area":
|
10
|
+
"lighting_fraction_to_return_air":
|
11
|
+
"lighting_fraction_radiant":
|
12
|
+
"lighting_fraction_visible":
|
13
|
+
"lighting_fraction_replaceable":
|
14
|
+
"lpd_fraction_linear_fluorescent":
|
15
|
+
"lpd_fraction_compact_fluorescent":
|
16
|
+
"lpd_fraction_high_bay":
|
17
|
+
"lpd_fraction_specialty_lighting":
|
18
|
+
"lpd_fraction_exit_lighting":
|
19
|
+
"lighting_schedule":
|
20
|
+
"compact_fluorescent_lighting_schedule":
|
21
|
+
"high_bay_lighting_schedule":
|
22
|
+
"specialty_lighting_schedule":
|
23
|
+
"exit_lighting_schedule":
|
24
|
+
"target_illuminance_setpoint":
|
25
|
+
"psa_nongeometry_fraction":
|
26
|
+
"ssa_nongeometry_fraction":
|
27
|
+
"ventilation_standard":
|
28
|
+
"ventilation_primary_space_type":
|
29
|
+
"ventilation_secondary_space_type":
|
30
|
+
"ventilation_per_area": cfm/ft^2
|
31
|
+
"ventilation_per_person": cfm/person
|
32
|
+
"ventilation_air_changes": air changes/hour
|
33
|
+
"minimum_total_air_changes":
|
34
|
+
"occupancy_per_area": people/ft^2
|
35
|
+
"occupancy_schedule":
|
36
|
+
"occupancy_activity_schedule":
|
37
|
+
"infiltration_per_exterior_area": cfm/ft^2
|
38
|
+
"infiltration_per_exterior_wall_area": cfm/ft^2
|
39
|
+
"infiltration_air_changes": air changes/hour
|
40
|
+
"infiltration_schedule":
|
41
|
+
"infiltration_schedule_perimeter":
|
42
|
+
"gas_equipment_per_area": Btu/(hr*ft^2)
|
43
|
+
"gas_equipment_fraction_latent":
|
44
|
+
"gas_equipment_fraction_radiant":
|
45
|
+
"gas_equipment_fraction_lost":
|
46
|
+
"gas_equipment_schedule":
|
47
|
+
"electric_equipment_per_area": W/ft^2
|
48
|
+
"electric_equipment_fraction_latent":
|
49
|
+
"electric_equipment_fraction_radiant":
|
50
|
+
"electric_equipment_fraction_lost":
|
51
|
+
"electric_equipment_schedule":
|
52
|
+
"additional_electric_equipment_schedule":
|
53
|
+
"additional_gas_equipment_schedule":
|
54
|
+
"heating_setpoint_schedule":
|
55
|
+
"cooling_setpoint_schedule":
|
56
|
+
"service_water_heating_peak_flow_rate": US Gal/hr
|
57
|
+
"service_water_heating_area": US Gal/(hr*ft^2)
|
58
|
+
"service_water_heating_peak_flow_per_area": US Gal/(hr*ft^2)
|
59
|
+
"service_water_heating_target_temperature": deg. C
|
60
|
+
"service_water_heating_fraction_sensible":
|
61
|
+
"service_water_heating_fraction_latent":
|
62
|
+
"service_water_heating_schedule":
|
63
|
+
"exhaust_per_area": N/A,
|
64
|
+
"exhaust_fan_efficiency": N/A
|
65
|
+
"exhaust_fan_power": N/A
|
66
|
+
"exhaust_fan_pressure_rise": N/A
|
67
|
+
"exhaust_fan_maximum_flow_rate": N/A
|
68
|
+
"exhaust_schedule":
|
69
|
+
"balanced_exhaust_fraction_schedule":
|
70
|
+
"is_residential":
|
71
|
+
"necb_hvac_system_selection_type":
|
72
|
+
"necb_schedule_type":
|
73
|
+
"notes":
|
74
|
+
"ventilation_occupancy_rate_people_per_1000ft2": people/1000 ft^2
|
75
|
+
"ventilation_occupancy_standard":
|
76
|
+
"ventilation_standard_space_type":
|
@@ -96,7 +96,12 @@ class NECB2011
|
|
96
96
|
|
97
97
|
# TODO: other fuel-fired heating coil types? (not available in OpenStudio/E+ - may need to play with efficiency to mimic other fuel types)
|
98
98
|
|
99
|
-
|
99
|
+
# This method will seem like an error in number of args..but this is due to swig voodoo.
|
100
|
+
air_to_air_heatpump = OpenStudio::Model::AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.new(model,
|
101
|
+
mau_fan,
|
102
|
+
mau_htg_coil,
|
103
|
+
mau_clg_coil,
|
104
|
+
mau_supplemental_htg_coil)
|
100
105
|
air_to_air_heatpump.setName("#{zones[0].name} ASHP")
|
101
106
|
air_to_air_heatpump.setMinimumOutdoorDryBulbTemperatureforCompressorOperation(system_data[:MinimumOutdoorDryBulbTemperatureforCompressorOperation])
|
102
107
|
air_to_air_heatpump.setControllingZoneorThermostatLocation(zones[0])
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class NECB2011
|
2
2
|
def add_sys1_unitary_ac_baseboard_heating(model:,
|
3
|
+
necb_reference_hp:false,
|
4
|
+
necb_reference_hp_supp_fuel:'DefaultFuel',
|
3
5
|
zones:,
|
4
6
|
mau_type:,
|
5
7
|
mau_heating_coil_type:,
|
@@ -15,6 +17,8 @@ class NECB2011
|
|
15
17
|
hw_loop: hw_loop)
|
16
18
|
else
|
17
19
|
add_sys1_unitary_ac_baseboard_heating_single_speed(model: model,
|
20
|
+
necb_reference_hp: necb_reference_hp,
|
21
|
+
necb_reference_hp_supp_fuel: necb_reference_hp_supp_fuel,
|
18
22
|
zones: zones,
|
19
23
|
mau_type: mau_type,
|
20
24
|
mau_heating_coil_type: mau_heating_coil_type,
|
@@ -24,12 +28,13 @@ class NECB2011
|
|
24
28
|
end
|
25
29
|
|
26
30
|
def add_sys1_unitary_ac_baseboard_heating_single_speed(model:,
|
31
|
+
necb_reference_hp:false,
|
32
|
+
necb_reference_hp_supp_fuel:'DefaultFuel',
|
27
33
|
zones:,
|
28
34
|
mau_type:,
|
29
35
|
mau_heating_coil_type:,
|
30
36
|
baseboard_type:,
|
31
37
|
hw_loop:)
|
32
|
-
|
33
38
|
# Keep all data and assumptions for both systems on the top here for easy reference.
|
34
39
|
system_data = {}
|
35
40
|
system_data[:name] = 'Sys_1_Make-up air unit'
|
@@ -49,7 +54,11 @@ class NECB2011
|
|
49
54
|
system_data[:CentralHeatingDesignSupplyAirTemperature] = 43.0
|
50
55
|
system_data[:AllOutdoorAirinCooling] = true
|
51
56
|
system_data[:AllOutdoorAirinHeating] = true
|
52
|
-
|
57
|
+
if necb_reference_hp
|
58
|
+
system_data[:TypeofLoadtoSizeOn] = 'Total'
|
59
|
+
else
|
60
|
+
system_data[:TypeofLoadtoSizeOn] = 'VentilationRequirement'
|
61
|
+
end
|
53
62
|
system_data[:MinimumSystemAirFlowRatio] = 1.0
|
54
63
|
# Zone Sizing data
|
55
64
|
system_data[:system_supply_air_temperature] = 20.0
|
@@ -57,10 +66,12 @@ class NECB2011
|
|
57
66
|
system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference] = 11.0
|
58
67
|
system_data[:ZoneCoolingDesignSupplyAirTemperatureInputMethod] = 'TemperatureDifference'
|
59
68
|
system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference] = 21.0
|
69
|
+
system_data[:ZoneDXCoolingSizingFactor] = 1.0
|
70
|
+
system_data[:ZoneDXHeatingSizingFactor] = 1.3
|
60
71
|
system_data[:ZoneCoolingSizingFactor] = 1.1
|
61
72
|
system_data[:ZoneHeatingSizingFactor] = 1.3
|
62
73
|
|
63
|
-
# System Type 1: PTAC with no heating (unitary AC)
|
74
|
+
# System Type 1: PTAC with no heating (unitary AC)
|
64
75
|
# Zone baseboards, electric or hot water depending on argument baseboard_type
|
65
76
|
# baseboard_type choices are "Hot Water" or "Electric"
|
66
77
|
# PSZ to represent make-up air unit (if present)
|
@@ -74,6 +85,9 @@ class NECB2011
|
|
74
85
|
# mau_heating_coil_type choices are "Hot Water", "Electric"
|
75
86
|
# boiler_fueltype choices match OS choices for Boiler component fuel type, i.e.
|
76
87
|
# "NaturalGas","Electricity","PropaneGas","FuelOilNo1","FuelOilNo2","Coal","Diesel","Gasoline","OtherFuel1"
|
88
|
+
|
89
|
+
# If reference_hp = true, NECB 8.4.4.13 Heat Pump System Type 1: CAV Packaged rooftop heat pump with
|
90
|
+
# zone baseboard (electric or hot water depending on argument baseboard_type)
|
77
91
|
|
78
92
|
# Some system parameters are set after system is set up; by applying method 'apply_hvac_efficiency_standard'
|
79
93
|
|
@@ -83,23 +97,34 @@ class NECB2011
|
|
83
97
|
# Create MAU
|
84
98
|
# TO DO: MAU sizing, characteristics (fan operation schedules, temperature setpoints, outdoor air, etc)
|
85
99
|
|
100
|
+
|
101
|
+
|
86
102
|
if mau_type == true
|
87
103
|
mau_air_loop = common_air_loop(model: model, system_data: system_data)
|
88
|
-
|
104
|
+
|
105
|
+
#if reference_hp
|
106
|
+
# AirLoopHVACUnitaryHeatPumpAirToAir needs FanOnOff in order for the fan to turn off during off hours
|
107
|
+
# mau_fan = OpenStudio::Model::FanOnOff.new(model, always_on)
|
108
|
+
#else
|
109
|
+
mau_fan = OpenStudio::Model::FanConstantVolume.new(model, always_on)
|
110
|
+
#end
|
89
111
|
# MAU Heating type selection.
|
112
|
+
raise("Flag 'necb_reference_hp' is true while 'mau_heating_coil_type' is not set to type DX") if (necb_reference_hp && (mau_heating_coil_type != 'DX'))
|
90
113
|
if mau_heating_coil_type == 'Electric' # electric coil
|
91
114
|
mau_htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
|
92
|
-
|
93
|
-
|
94
|
-
if mau_heating_coil_type == 'Hot Water'
|
115
|
+
elsif mau_heating_coil_type == 'Hot Water'
|
95
116
|
mau_htg_coil = OpenStudio::Model::CoilHeatingWater.new(model, always_on)
|
96
117
|
hw_loop.addDemandBranchForComponent(mau_htg_coil)
|
118
|
+
elsif mau_heating_coil_type == 'DX'
|
119
|
+
mau_htg_coil = add_onespeed_htg_DX_coil(model, always_on)
|
120
|
+
mau_htg_coil.setName('CoilHeatingDXSingleSpeed_ashp')
|
97
121
|
end
|
98
122
|
|
99
123
|
# Set up Single Speed DX coil with
|
100
124
|
mau_clg_coil = add_onespeed_DX_coil(model, always_on)
|
101
125
|
mau_clg_coil.setName('CoilCoolingDXSingleSpeed_dx')
|
102
|
-
|
126
|
+
mau_clg_coil.setName('CoilCoolingDXSingleSpeed_ashp') if necb_reference_hp
|
127
|
+
|
103
128
|
# Set up OA system
|
104
129
|
oa_controller = OpenStudio::Model::ControllerOutdoorAir.new(model)
|
105
130
|
oa_controller.autosizeMinimumOutdoorAirFlowRate
|
@@ -113,18 +138,46 @@ class NECB2011
|
|
113
138
|
# Add the components to the air loop
|
114
139
|
# in order from closest to zone to furthest from zone
|
115
140
|
supply_inlet_node = mau_air_loop.supplyInletNode
|
116
|
-
mau_fan.addToNode(supply_inlet_node)
|
117
|
-
mau_htg_coil.addToNode(supply_inlet_node)
|
118
|
-
mau_clg_coil.addToNode(supply_inlet_node)
|
119
|
-
oa_system.addToNode(supply_inlet_node)
|
120
141
|
|
142
|
+
# Reference HP requires slight changes to default MAU heating
|
143
|
+
#if reference_hp
|
144
|
+
# Create supplemental heating coil based on default regional fuel type
|
145
|
+
#epw = BTAP::Environment::WeatherFile.new(model.weatherFile.get.path.get)
|
146
|
+
#primary_heating_fuel = @standards_data['regional_fuel_use'].detect { |fuel_sources| fuel_sources['state_province_regions'].include?(epw.state_province_region) }['fueltype_set']
|
147
|
+
#if primary_heating_fuel == 'NaturalGas'
|
148
|
+
# supplemental_htg_coil = OpenStudio::Model::CoilHeatingGas.new(model, always_on)
|
149
|
+
#elsif primary_heating_fuel == 'Electricity' or primary_heating_fuel == 'FuelOilNo2'
|
150
|
+
# supplemental_htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
|
151
|
+
#else #hot water coils is an option in the future
|
152
|
+
# raise('Invalid fuel type selected for heat pump supplemental coil')
|
153
|
+
#end
|
154
|
+
#air_to_air_heatpump = OpenStudio::Model::AirLoopHVACUnitaryHeatPumpAirToAir.new(model, always_on, mau_fan, mau_htg_coil, mau_clg_coil, supplemental_htg_coil)
|
155
|
+
#air_to_air_heatpump.setName("#{control_zone.name} ASHP")
|
156
|
+
#air_to_air_heatpump.setControllingZone(control_zone)
|
157
|
+
#air_to_air_heatpump.setSupplyAirFanOperatingModeSchedule(always_on)
|
158
|
+
#air_to_air_heatpump.addToNode(supply_inlet_node)
|
159
|
+
#else
|
160
|
+
mau_fan.addToNode(supply_inlet_node)
|
161
|
+
mau_htg_coil.addToNode(supply_inlet_node)
|
162
|
+
mau_clg_coil.addToNode(supply_inlet_node)
|
163
|
+
|
164
|
+
#end
|
165
|
+
oa_system.addToNode(supply_inlet_node)
|
166
|
+
|
121
167
|
# Add a setpoint manager to control the supply air temperature
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
168
|
+
if necb_reference_hp
|
169
|
+
setpoint_mgr = OpenStudio::Model::SetpointManagerWarmest.new(model)
|
170
|
+
setpoint_mgr.setMinimumSetpointTemperature(13)
|
171
|
+
setpoint_mgr.setMaximumSetpointTemperature(20)
|
172
|
+
setpoint_mgr.addToNode(mau_air_loop.supplyOutletNode)
|
173
|
+
else
|
174
|
+
sat_sch = OpenStudio::Model::ScheduleRuleset.new(model)
|
175
|
+
sat_sch.setName('Makeup-Air Unit Supply Air Temp')
|
176
|
+
sat_sch.defaultDaySchedule.setName('Makeup Air Unit Supply Air Temp Default')
|
177
|
+
sat_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), system_data[:system_supply_air_temperature])
|
178
|
+
setpoint_mgr = OpenStudio::Model::SetpointManagerScheduled.new(model, sat_sch)
|
179
|
+
setpoint_mgr.addToNode(mau_air_loop.supplyOutletNode)
|
180
|
+
end
|
128
181
|
end
|
129
182
|
|
130
183
|
zones.each do |zone|
|
@@ -134,8 +187,14 @@ class NECB2011
|
|
134
187
|
sizing_zone.setZoneCoolingDesignSupplyAirTemperatureDifference(system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference])
|
135
188
|
sizing_zone.setZoneHeatingDesignSupplyAirTemperatureInputMethod(system_data[:ZoneHeatingDesignSupplyAirTemperatureInputMethod])
|
136
189
|
sizing_zone.setZoneHeatingDesignSupplyAirTemperatureDifference(system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference])
|
137
|
-
|
138
|
-
|
190
|
+
# Different sizing factors for reference HP capacity
|
191
|
+
if necb_reference_hp
|
192
|
+
sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
|
193
|
+
sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
|
194
|
+
else
|
195
|
+
sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
|
196
|
+
sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
|
197
|
+
end
|
139
198
|
|
140
199
|
# Create a PTAC for each zone:
|
141
200
|
# PTAC DX Cooling with electric heating coil; electric heating coil is always off
|
@@ -150,7 +209,10 @@ class NECB2011
|
|
150
209
|
|
151
210
|
# htg_coil_elec = OpenStudio::Model::CoilHeatingElectric.new(model,always_on)
|
152
211
|
zero_outdoor_air = true # flag to set outside air flow to 0.0
|
153
|
-
|
212
|
+
# Reference HP system does not use PTAC
|
213
|
+
unless necb_reference_hp
|
214
|
+
add_ptac_dx_cooling(model, zone, zero_outdoor_air)
|
215
|
+
end
|
154
216
|
|
155
217
|
# add zone baseboards
|
156
218
|
add_zone_baseboards(baseboard_type: baseboard_type,
|
@@ -159,7 +221,23 @@ class NECB2011
|
|
159
221
|
zone: zone)
|
160
222
|
|
161
223
|
# # Create a diffuser and attach the zone/diffuser pair to the MAU air loop, if applicable
|
162
|
-
|
224
|
+
|
225
|
+
if necb_reference_hp
|
226
|
+
# Create CAV RH (RH based on region's default fuel type or user input)
|
227
|
+
if necb_reference_hp_supp_fuel == 'DefaultFuel'
|
228
|
+
epw = BTAP::Environment::WeatherFile.new(model.weatherFile.get.path.get)
|
229
|
+
necb_reference_hp_supp_fuel = @standards_data['regional_fuel_use'].detect { |fuel_sources| fuel_sources['state_province_regions'].include?(epw.state_province_region) }['fueltype_set']
|
230
|
+
end
|
231
|
+
if necb_reference_hp_supp_fuel == 'NaturalGas'
|
232
|
+
rh_coil = OpenStudio::Model::CoilHeatingGas.new(model, always_on)
|
233
|
+
elsif necb_reference_hp_supp_fuel == 'Electricity' or necb_reference_hp_supp_fuel == 'FuelOilNo2'
|
234
|
+
rh_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
|
235
|
+
else #hot water coils is an option in the future
|
236
|
+
raise('Invalid fuel type selected for heat pump supplemental coil')
|
237
|
+
end
|
238
|
+
cav_rh_terminal = OpenStudio::Model::AirTerminalSingleDuctConstantVolumeReheat.new(model, always_on, rh_coil)
|
239
|
+
mau_air_loop.addBranchForZone(zone, cav_rh_terminal.to_StraightComponent)
|
240
|
+
elsif mau_type == true
|
163
241
|
diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
|
164
242
|
mau_air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
|
165
243
|
# components for MAU
|
@@ -170,14 +248,23 @@ class NECB2011
|
|
170
248
|
sys_name_pars = {}
|
171
249
|
sys_name_pars['sys_hr'] = 'none'
|
172
250
|
sys_name_pars['sys_clg'] = 'dx'
|
251
|
+
sys_name_pars['sys_clg'] = 'ashp' if necb_reference_hp
|
173
252
|
sys_name_pars['sys_htg'] = mau_heating_coil_type
|
253
|
+
sys_name_pars['sys_htg'] = 'ashp' if necb_reference_hp
|
174
254
|
sys_name_pars['sys_sf'] = 'cv'
|
175
255
|
sys_name_pars['zone_htg'] = baseboard_type
|
176
|
-
|
256
|
+
sys_oa = 'doas'
|
257
|
+
if necb_reference_hp
|
258
|
+
sys_name_pars['zone_clg'] = 'none'
|
259
|
+
sys_oa = 'mixed'
|
260
|
+
else
|
261
|
+
sys_name_pars['zone_clg'] = 'ptac'
|
262
|
+
sys_oa = 'doas'
|
263
|
+
end
|
177
264
|
sys_name_pars['sys_rf'] = 'none'
|
178
265
|
assign_base_sys_name(mau_air_loop,
|
179
266
|
sys_abbr: 'sys_1',
|
180
|
-
sys_oa:
|
267
|
+
sys_oa: sys_oa,
|
181
268
|
sys_name_pars: sys_name_pars)
|
182
269
|
end
|
183
270
|
|
@@ -150,6 +150,7 @@ class NECB2011
|
|
150
150
|
chw_loop.addDemandBranchForComponent(fc_clg_coil)
|
151
151
|
|
152
152
|
# add connections to FPFC.
|
153
|
+
# This method will seem like an error in number of args..but this is due to swig voodoo.
|
153
154
|
zone_fc = OpenStudio::Model::ZoneHVACFourPipeFanCoil.new(model, always_on, fc_fan, fc_clg_coil, fc_htg_coil)
|
154
155
|
zone_fc.addToThermalZone(zone)
|
155
156
|
|
@@ -67,12 +67,12 @@ class NECB2011
|
|
67
67
|
return true
|
68
68
|
else
|
69
69
|
zones.each do |zone|
|
70
|
+
air_loop = add_system_3_and_8_airloop_multi_speed(heating_coil_type, model, system_data, zone)
|
70
71
|
add_sys3_and_8_zone_equip(air_loop,
|
71
72
|
baseboard_type,
|
72
73
|
hw_loop,
|
73
74
|
model,
|
74
75
|
zone)
|
75
|
-
air_loop = add_system_3_and_8_airloop_multi_speed(heating_coil_type, model, system_data, zone)
|
76
76
|
end
|
77
77
|
return true
|
78
78
|
end
|
@@ -150,12 +150,14 @@ class NECB2011
|
|
150
150
|
supply_inlet_node = air_loop.supplyInletNode
|
151
151
|
|
152
152
|
if (heating_coil_type == 'Gas') || (heating_coil_type == 'Electric')
|
153
|
+
# This method will seem like an error in number of args..but this is due to swig voodoo.
|
153
154
|
air_to_air_heatpump = OpenStudio::Model::AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.new(model, fan, htg_coil, clg_coil, supplemental_htg_coil)
|
154
155
|
air_to_air_heatpump.setControllingZoneorThermostatLocation(control_zone)
|
155
156
|
air_to_air_heatpump.setNumberofSpeedsforHeating(1)
|
156
157
|
air_to_air_heatpump.setNumberofSpeedsforCooling(2)
|
157
158
|
air_to_air_heatpump.setMinimumOutdoorDryBulbTemperatureforCompressorOperation(system_data[:MinimumOutdoorDryBulbTemperatureforCompressorOperation])
|
158
159
|
elsif heating_coil_type == 'DX'
|
160
|
+
# This method will seem like an error in number of args..but this is due to swig voodoo.
|
159
161
|
air_to_air_heatpump = OpenStudio::Model::AirLoopHVACUnitaryHeatPumpAirToAir.new(model, always_on, fan, htg_coil, clg_coil, supplemental_htg_coil)
|
160
162
|
air_to_air_heatpump.setControllingZone(zone)
|
161
163
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class NECB2011
|
2
2
|
def add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating(model:,
|
3
|
+
necb_reference_hp:false,
|
4
|
+
necb_reference_hp_supp_fuel:'DefaultFuel',
|
3
5
|
zones:,
|
4
6
|
heating_coil_type:,
|
5
7
|
baseboard_type:,
|
@@ -15,17 +17,22 @@ class NECB2011
|
|
15
17
|
new_auto_zoner: new_auto_zoner)
|
16
18
|
else
|
17
19
|
add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating_single_speed(model: model,
|
20
|
+
necb_reference_hp: necb_reference_hp,
|
21
|
+
necb_reference_hp_supp_fuel: necb_reference_hp_supp_fuel,
|
18
22
|
zones: zones,
|
19
23
|
heating_coil_type: heating_coil_type,
|
20
24
|
baseboard_type: baseboard_type,
|
21
25
|
hw_loop: hw_loop,
|
22
26
|
new_auto_zoner: new_auto_zoner)
|
27
|
+
|
23
28
|
end
|
24
29
|
end
|
25
30
|
|
26
31
|
# Some tests still require a simple way to set up a system without sizing.. so we are keeping the auto_zoner flag for this method.
|
27
32
|
#
|
28
33
|
def add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating_single_speed(model:,
|
34
|
+
necb_reference_hp:false,
|
35
|
+
necb_reference_hp_supp_fuel:'DefaultFuel',
|
29
36
|
zones:,
|
30
37
|
heating_coil_type:,
|
31
38
|
baseboard_type:,
|
@@ -65,7 +72,6 @@ class NECB2011
|
|
65
72
|
system_data[:ZoneCoolingSizingFactor] = 1.1
|
66
73
|
system_data[:ZoneHeatingSizingFactor] = 1.3
|
67
74
|
system_data[:MinimumOutdoorDryBulbTemperatureforCompressorOperation] = -10.0
|
68
|
-
|
69
75
|
if new_auto_zoner == true
|
70
76
|
# Create system airloop
|
71
77
|
|
@@ -73,7 +79,9 @@ class NECB2011
|
|
73
79
|
air_loop = add_system_3_and_8_airloop(heating_coil_type,
|
74
80
|
model,
|
75
81
|
system_data,
|
76
|
-
determine_control_zone(zones)
|
82
|
+
determine_control_zone(zones),
|
83
|
+
necb_reference_hp: necb_reference_hp,
|
84
|
+
necb_reference_hp_supp_fuel: necb_reference_hp_supp_fuel)
|
77
85
|
# Add Zone equipment
|
78
86
|
zones.each do |zone| # Zone sizing temperature difference
|
79
87
|
sizing_zone = zone.sizingZone
|
@@ -81,17 +89,23 @@ class NECB2011
|
|
81
89
|
sizing_zone.setZoneCoolingDesignSupplyAirTemperatureDifference(system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference])
|
82
90
|
sizing_zone.setZoneHeatingDesignSupplyAirTemperatureInputMethod(system_data[:ZoneHeatingDesignSupplyAirTemperatureInputMethod])
|
83
91
|
sizing_zone.setZoneHeatingDesignSupplyAirTemperatureDifference(system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference])
|
84
|
-
|
85
|
-
|
92
|
+
if necb_reference_hp
|
93
|
+
sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
|
94
|
+
sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
|
95
|
+
else
|
96
|
+
sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
|
97
|
+
sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
|
98
|
+
end
|
86
99
|
add_sys3_and_8_zone_equip(air_loop,
|
87
100
|
baseboard_type,
|
88
101
|
hw_loop,
|
89
102
|
model,
|
90
103
|
zone)
|
104
|
+
|
91
105
|
end
|
92
106
|
else
|
93
107
|
zones.each do |zone|
|
94
|
-
air_loop = add_system_3_and_8_airloop(heating_coil_type, model, system_data, zone)
|
108
|
+
air_loop = add_system_3_and_8_airloop(heating_coil_type, model, system_data, zone, necb_reference_hp: necb_reference_hp, necb_reference_hp_supp_fuel: necb_reference_hp_supp_fuel)
|
95
109
|
add_sys3_and_8_zone_equip(air_loop,
|
96
110
|
baseboard_type,
|
97
111
|
hw_loop,
|
@@ -102,7 +116,9 @@ class NECB2011
|
|
102
116
|
sys_name_pars = {}
|
103
117
|
sys_name_pars['sys_hr'] = 'none'
|
104
118
|
sys_name_pars['sys_clg'] = 'dx'
|
119
|
+
sys_name_pars['sys_clg'] = 'ashp' if necb_reference_hp
|
105
120
|
sys_name_pars['sys_htg'] = heating_coil_type
|
121
|
+
sys_name_pars['sys_htg'] = 'ashp' if necb_reference_hp
|
106
122
|
sys_name_pars['sys_sf'] = 'cv'
|
107
123
|
sys_name_pars['zone_htg'] = baseboard_type
|
108
124
|
sys_name_pars['zone_clg'] = 'none'
|
@@ -114,7 +130,7 @@ class NECB2011
|
|
114
130
|
return true
|
115
131
|
end
|
116
132
|
|
117
|
-
def add_system_3_and_8_airloop(heating_coil_type, model, system_data, control_zone)
|
133
|
+
def add_system_3_and_8_airloop(heating_coil_type, model, system_data, control_zone, necb_reference_hp:false, necb_reference_hp_supp_fuel:'DefaultFuel')
|
118
134
|
# System Type 3: PSZ-AC
|
119
135
|
# This measure creates:
|
120
136
|
# -a constant volume packaged single-zone A/C unit
|
@@ -136,20 +152,40 @@ class NECB2011
|
|
136
152
|
sizing_zone.setZoneCoolingDesignSupplyAirTemperatureDifference(system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference])
|
137
153
|
sizing_zone.setZoneHeatingDesignSupplyAirTemperatureInputMethod(system_data[:ZoneHeatingDesignSupplyAirTemperatureInputMethod])
|
138
154
|
sizing_zone.setZoneHeatingDesignSupplyAirTemperatureDifference(system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference])
|
139
|
-
|
140
|
-
|
155
|
+
if necb_reference_hp
|
156
|
+
sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
|
157
|
+
sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
|
158
|
+
else
|
159
|
+
sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
|
160
|
+
sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
|
161
|
+
end
|
141
162
|
|
142
|
-
|
163
|
+
if necb_reference_hp
|
164
|
+
#AirLoopHVACUnitaryHeatPumpAirToAir needs FanOnOff in order for the fan to turn off during off hours
|
165
|
+
fan = OpenStudio::Model::FanOnOff.new(model, always_on)
|
166
|
+
else
|
167
|
+
fan = OpenStudio::Model::FanConstantVolume.new(model, always_on)
|
168
|
+
end
|
143
169
|
|
170
|
+
# Set up DX coil
|
171
|
+
if necb_reference_hp #NECB curve characteristics
|
172
|
+
clg_coil = add_onespeed_DX_coil(model, always_on)
|
173
|
+
clg_coil.setName('CoilCoolingDXSingleSpeed_ashp')
|
174
|
+
else
|
175
|
+
clg_coil = OpenStudio::Model::CoilCoolingDXSingleSpeed.new(model) #sets default OS curve (but will be replaced with NECB curves later)
|
176
|
+
clg_coil.setName('CoilCoolingDXSingleSpeed_dx')
|
177
|
+
end
|
178
|
+
|
179
|
+
raise("Flag 'necb_reference_hp' is set to true while parameter 'heating_coil_type' is not set to DX") if (necb_reference_hp && (heating_coil_type != 'DX'))
|
144
180
|
case heating_coil_type
|
145
181
|
when 'Electric' # electric coil
|
146
182
|
htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
|
147
183
|
when 'Gas'
|
148
184
|
htg_coil = OpenStudio::Model::CoilHeatingGas.new(model, always_on)
|
149
185
|
when 'DX'
|
150
|
-
|
151
|
-
|
152
|
-
htg_coil.
|
186
|
+
#create main DX heating coil
|
187
|
+
htg_coil = add_onespeed_htg_DX_coil(model, always_on)
|
188
|
+
htg_coil.setName('CoilHeatingDXSingleSpeed_ashp')
|
153
189
|
sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
|
154
190
|
sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
|
155
191
|
else
|
@@ -158,9 +194,7 @@ class NECB2011
|
|
158
194
|
|
159
195
|
# TO DO: other fuel-fired heating coil types? (not available in OpenStudio/E+ - may need to play with efficiency to mimic other fuel types)
|
160
196
|
|
161
|
-
|
162
|
-
clg_coil = OpenStudio::Model::CoilCoolingDXSingleSpeed.new(model)
|
163
|
-
clg_coil.setName('CoilCoolingDXSingleSpeed_dx')
|
197
|
+
|
164
198
|
|
165
199
|
# oa_controller
|
166
200
|
oa_controller = OpenStudio::Model::ControllerOutdoorAir.new(model)
|
@@ -176,7 +210,21 @@ class NECB2011
|
|
176
210
|
# Add the components to the air loop
|
177
211
|
# in order from closest to zone to furthest from zone
|
178
212
|
supply_inlet_node = air_loop.supplyInletNode
|
179
|
-
if
|
213
|
+
if necb_reference_hp
|
214
|
+
|
215
|
+
#create supplemental heating coil based on default regional fuel type
|
216
|
+
if necb_reference_hp_supp_fuel == 'DefaultFuel'
|
217
|
+
epw = BTAP::Environment::WeatherFile.new(model.weatherFile.get.path.get)
|
218
|
+
necb_reference_hp_supp_fuel = @standards_data['regional_fuel_use'].detect { |fuel_sources| fuel_sources['state_province_regions'].include?(epw.state_province_region) }['fueltype_set']
|
219
|
+
end
|
220
|
+
if necb_reference_hp_supp_fuel == 'NaturalGas'
|
221
|
+
supplemental_htg_coil = OpenStudio::Model::CoilHeatingGas.new(model, always_on)
|
222
|
+
elsif necb_reference_hp_supp_fuel == 'Electricity' or necb_reference_hp_supp_fuel == 'FuelOilNo2'
|
223
|
+
supplemental_htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
|
224
|
+
else #hot water coils is an option in the future
|
225
|
+
raise('Invalid fuel type selected for heat pump supplemental coil')
|
226
|
+
end
|
227
|
+
# This method will seem like an error in number of args..but this is due to swig voodoo.
|
180
228
|
air_to_air_heatpump = OpenStudio::Model::AirLoopHVACUnitaryHeatPumpAirToAir.new(model, always_on, fan, htg_coil, clg_coil, supplemental_htg_coil)
|
181
229
|
air_to_air_heatpump.setName("#{control_zone.name} ASHP")
|
182
230
|
air_to_air_heatpump.setControllingZone(control_zone)
|