openstudio-standards 0.2.16 → 0.2.17.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/standards/manage_OpenStudio_Standards.rb +31 -4
- data/lib/openstudio-standards/btap/geometry.rb +1 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +354 -2
- data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +79 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +3313 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +12 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +3 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +167 -93
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +2 -4
- data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +1 -0
- data/lib/openstudio-standards/refs/references.rb +3 -0
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +279 -6
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +50 -2
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +4 -0
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.Construction.rb +185 -3
- data/lib/openstudio-standards/standards/Standards.Fan.rb +14 -6
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +1 -0
- data/lib/openstudio-standards/standards/Standards.Model.rb +1751 -383
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +130 -9
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +50 -3
- data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +44 -0
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +27 -0
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +543 -0
- data/lib/openstudio-standards/standards/Standards.Space.rb +665 -15
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +141 -4
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.Surface.rb +117 -0
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +197 -49
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +41 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Model.rb +6 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +45 -45
- 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 +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +45 -45
- 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 +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +45 -45
- 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 +9 -9
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +45 -45
- 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 +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/ashrae_90_1.schedules.json +45 -45
- 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 +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/ashrae_90_1.schedules.json +45 -45
- 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 +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.fans.json +12 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +45 -45
- 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 +10 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +45 -45
- 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 +10 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +792 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +10 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +31 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +91 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +84 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +145 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +106 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +71 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +194 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +120 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +110 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +73 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +24 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +55 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +3045 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +187 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +450 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +106 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +666 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +54 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +168 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +132 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +239 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +176 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +25 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.boilers.json +52 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.chillers.json +112 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.climate_zone_sets.json +210 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.construction_properties.json +10384 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.construction_sets.json +133 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.furnaces.json +43 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps.json +119 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps_heating.json +130 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_rejection.json +13 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.lpd_space_type.json +568 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +264 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_baseline_hvac.json +439 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_constructions.json +685 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_economizers.json +213 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_ext_ltg.json +32 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_heat_type.json +136 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_hvac_bldg_type.json +32 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_interior_lighting.json +1837 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_swh_bldg_type.json +184 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_wwr_bldg_type.json +84 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.unitary_acs.json +148 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.water_heaters.json +157 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.climate_zone_sets.json +210 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +18329 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +340 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.materials.json +49924 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_building_rotation_exception.md +44 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/check_pump_power_and_control.md +71 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/dcv.md +68 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/dcv_implementation.png +0 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/elevators.md +14 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/exhaust_air_energy_recovery.md +36 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/f_c_factors.md +19 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/fan_power_credits.md +15 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/preheat_coil.md +59 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/pump_power_control.md +46 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/return_air_type.md +31 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_baseline_wwr.md +191 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_hw_and_chw_supply_water_temp_reset_control.md +24 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_num_boilers_chillers_towers.md +49 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +80 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_space_lpd.md +73 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unenclosed_and_unconditioned_spaces.md +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unmet_load_hours.md +20 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_parallel_piu_terminals_fan_control.md +23 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_terminals_min_flow_setpoint.md +21 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac_doas.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_building.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_design_specification_outdoor_air.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_electric_equipment.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_exterior_lights.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_gas_equipment.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_lights.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_spacetype.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_thermal_zone.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_connections.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment_definition.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_hvac.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_infiltration.csv +1 -0
- data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +12 -0
- data/lib/openstudio-standards/standards/deer/data/deer.fans.json +12 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps.json +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps_heating.json +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/data/unitary_acs.json +24 -11
- data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +13 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/data/province_map.json +17 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +6 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +3 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +2 -3
- data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +33 -924
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +15 -15
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +135 -29
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +16 -4
- data/lib/openstudio-standards/standards/necb/common/neb_end_use_prices.csv +40 -42
- data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +1 -1
- data/lib/openstudio-standards/standards/necb/common/space_type_upgrade_map.json +89 -89
- data/lib/openstudio-standards/utilities/array.rb +11 -0
- data/lib/openstudio-standards/utilities/logging.rb +48 -0
- data/lib/openstudio-standards/utilities/object_info.rb +20 -0
- data/lib/openstudio-standards/utilities/schedule_translator.rb +348 -0
- data/lib/openstudio-standards/utilities/sqlfile.rb +68 -0
- data/lib/openstudio-standards/version.rb +2 -2
- data/lib/openstudio-standards/weather/Weather.Model.rb +42 -55
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +1 -1
- data/lib/openstudio-standards.rb +35 -1
- metadata +111 -6
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1_28Jan2022.xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1_28_Jan2022_2.xlsx +0 -0
- data/data/standards/openstudio_standards_duplicates_log.csv +0 -143
@@ -452,7 +452,7 @@
|
|
452
452
|
"heating_type": "Electric Resistance or None",
|
453
453
|
"subcategory": "PTAC",
|
454
454
|
"minimum_capacity": 0,
|
455
|
-
"maximum_capacity":
|
455
|
+
"maximum_capacity": 7165.4,
|
456
456
|
"start_date": "9/9/1919",
|
457
457
|
"end_date": "2999-09-09T00:00:00+00:00",
|
458
458
|
"minimum_seasonal_energy_efficiency_ratio": null,
|
@@ -466,7 +466,7 @@
|
|
466
466
|
"cool_eir_ft": "DXCOOL-NECB2011-REF-COOLEIRFT",
|
467
467
|
"cool_eir_fflow": "DXCOOL-NECB2011-REF-COOLEIRFFLOW",
|
468
468
|
"cool_plf_fplr": "DXCOOL-NECB2011-REF-COOLPLFFPLR",
|
469
|
-
"notes": "From NECB
|
469
|
+
"notes": "From NECB 2020, Table 5.2.12.1.G"
|
470
470
|
},
|
471
471
|
{
|
472
472
|
|
@@ -474,7 +474,7 @@
|
|
474
474
|
"heating_type": "All Other",
|
475
475
|
"subcategory": "PTAC",
|
476
476
|
"minimum_capacity": 0,
|
477
|
-
"maximum_capacity":
|
477
|
+
"maximum_capacity": 7165.4,
|
478
478
|
"start_date": "9/9/1919",
|
479
479
|
"end_date": "2999-09-09T00:00:00+00:00",
|
480
480
|
"minimum_seasonal_energy_efficiency_ratio": null,
|
@@ -488,15 +488,15 @@
|
|
488
488
|
"cool_eir_ft": "DXCOOL-NECB2011-REF-COOLEIRFT",
|
489
489
|
"cool_eir_fflow": "DXCOOL-NECB2011-REF-COOLEIRFFLOW",
|
490
490
|
"cool_plf_fplr": "DXCOOL-NECB2011-REF-COOLPLFFPLR",
|
491
|
-
"notes": "From NECB
|
491
|
+
"notes": "From NECB 2020, Table 5.2.12.1.G"
|
492
492
|
},
|
493
493
|
{
|
494
494
|
|
495
495
|
"cooling_type": "AirCooled",
|
496
496
|
"heating_type": "Electric Resistance or None",
|
497
497
|
"subcategory": "PTAC",
|
498
|
-
"minimum_capacity":
|
499
|
-
"maximum_capacity":
|
498
|
+
"minimum_capacity": 7165.5,
|
499
|
+
"maximum_capacity": 15013.2,
|
500
500
|
"start_date": "9/9/1919",
|
501
501
|
"end_date": "2999-09-09T00:00:00+00:00",
|
502
502
|
"minimum_seasonal_energy_efficiency_ratio": null,
|
@@ -510,15 +510,15 @@
|
|
510
510
|
"cool_eir_ft": "DXCOOL-NECB2011-REF-COOLEIRFT",
|
511
511
|
"cool_eir_fflow": "DXCOOL-NECB2011-REF-COOLEIRFFLOW",
|
512
512
|
"cool_plf_fplr": "DXCOOL-NECB2011-REF-COOLPLFFPLR",
|
513
|
-
"notes": "From NECB
|
513
|
+
"notes": "From NECB 2020, Table 5.2.12.1.G"
|
514
514
|
},
|
515
515
|
{
|
516
516
|
|
517
517
|
"cooling_type": "AirCooled",
|
518
518
|
"heating_type": "All Other",
|
519
519
|
"subcategory": "PTAC",
|
520
|
-
"minimum_capacity":
|
521
|
-
"maximum_capacity":
|
520
|
+
"minimum_capacity": 7165.5,
|
521
|
+
"maximum_capacity": 15013.2,
|
522
522
|
"start_date": "9/9/1919",
|
523
523
|
"end_date": "2999-09-09T00:00:00+00:00",
|
524
524
|
"minimum_seasonal_energy_efficiency_ratio": null,
|
@@ -532,14 +532,14 @@
|
|
532
532
|
"cool_eir_ft": "DXCOOL-NECB2011-REF-COOLEIRFT",
|
533
533
|
"cool_eir_fflow": "DXCOOL-NECB2011-REF-COOLEIRFFLOW",
|
534
534
|
"cool_plf_fplr": "DXCOOL-NECB2011-REF-COOLPLFFPLR",
|
535
|
-
"notes": "From NECB
|
535
|
+
"notes": "From NECB 2020, Table 5.2.12.1.G"
|
536
536
|
},
|
537
537
|
{
|
538
538
|
|
539
539
|
"cooling_type": "AirCooled",
|
540
540
|
"heating_type": "Electric Resistance or None",
|
541
541
|
"subcategory": "PTAC",
|
542
|
-
"minimum_capacity":
|
542
|
+
"minimum_capacity": 15013.3,
|
543
543
|
"maximum_capacity": 9999999.0,
|
544
544
|
"start_date": "9/9/1919",
|
545
545
|
"end_date": "2999-09-09T00:00:00+00:00",
|
@@ -554,14 +554,14 @@
|
|
554
554
|
"cool_eir_ft": "DXCOOL-NECB2011-REF-COOLEIRFT",
|
555
555
|
"cool_eir_fflow": "DXCOOL-NECB2011-REF-COOLEIRFFLOW",
|
556
556
|
"cool_plf_fplr": "DXCOOL-NECB2011-REF-COOLPLFFPLR",
|
557
|
-
"notes": "From NECB
|
557
|
+
"notes": "From NECB 2020, Table 5.2.12.1.G"
|
558
558
|
},
|
559
559
|
{
|
560
560
|
|
561
561
|
"cooling_type": "AirCooled",
|
562
562
|
"heating_type": "All Other",
|
563
563
|
"subcategory": "PTAC",
|
564
|
-
"minimum_capacity":
|
564
|
+
"minimum_capacity": 15013.3,
|
565
565
|
"maximum_capacity": 9999999.0,
|
566
566
|
"start_date": "9/9/1919",
|
567
567
|
"end_date": "2999-09-09T00:00:00+00:00",
|
@@ -576,10 +576,10 @@
|
|
576
576
|
"cool_eir_ft": "DXCOOL-NECB2011-REF-COOLEIRFT",
|
577
577
|
"cool_eir_fflow": "DXCOOL-NECB2011-REF-COOLEIRFFLOW",
|
578
578
|
"cool_plf_fplr": "DXCOOL-NECB2011-REF-COOLPLFFPLR",
|
579
|
-
"notes": "From NECB
|
579
|
+
"notes": "From NECB 2020, Table 5.2.12.1.G"
|
580
580
|
}
|
581
581
|
|
582
582
|
]
|
583
583
|
}
|
584
584
|
}
|
585
|
-
}
|
585
|
+
}
|
@@ -6,12 +6,14 @@ class BTAPData
|
|
6
6
|
attr_accessor :btap_data
|
7
7
|
|
8
8
|
def initialize(model:, runner: nil, cost_result:, baseline_cost_equipment_total_cost_per_m_sq: -1.0,
|
9
|
-
baseline_cost_utility_neb_total_cost_per_m_sq: -1.0, baseline_energy_eui_total_gj_per_m_sq: -1.0, qaqc
|
9
|
+
baseline_cost_utility_neb_total_cost_per_m_sq: -1.0, baseline_energy_eui_total_gj_per_m_sq: -1.0, qaqc:,
|
10
|
+
npv_start_year:, npv_end_year:, npv_discount_rate:)
|
10
11
|
@model = model
|
11
12
|
@error_warning = []
|
12
13
|
# sets sql file.
|
13
14
|
set_sql_file(model.sqlFile)
|
14
15
|
@standard = Standard.build('NECB2011')
|
16
|
+
@standards_data = @standard.load_standards_database_new()
|
15
17
|
@btap_data = {}
|
16
18
|
@btap_results_version = 1.00
|
17
19
|
@neb_prices_csv_file_name = File.join(__dir__, 'neb_end_use_prices.csv')
|
@@ -84,6 +86,8 @@ class BTAPData
|
|
84
86
|
phius_performance_indicators(model)
|
85
87
|
# The below method calculates energy performance indicators (i.e. TEDI and MEUI) as per BC Energy Step Code
|
86
88
|
bc_energy_step_code_performance_indicators
|
89
|
+
# calculate net present value
|
90
|
+
net_present_value(npv_start_year, npv_end_year, npv_discount_rate) unless cost_result.nil?
|
87
91
|
|
88
92
|
measure_metrics(qaqc)
|
89
93
|
@btap_data
|
@@ -157,6 +161,7 @@ class BTAPData
|
|
157
161
|
building_data['cost_equipment_heating_and_cooling_total_cost_per_m_sq'] = (cost_result['totals']['heating_and_cooling']) / @conditioned_floor_area_m_sq
|
158
162
|
building_data['cost_equipment_shw_total_cost_per_m_sq'] = (cost_result['totals']['shw']) / @conditioned_floor_area_m_sq
|
159
163
|
building_data['cost_equipment_ventilation_total_cost_per_m_sq'] = (cost_result['totals']['ventilation']) / @conditioned_floor_area_m_sq
|
164
|
+
building_data['cost_equipment_renewables_total_cost_per_m_sq'] = (cost_result['totals']['renewables']) / @conditioned_floor_area_m_sq
|
160
165
|
building_data['cost_equipment_total_cost_per_m_sq'] = (cost_result['totals']['grand_total']) / @conditioned_floor_area_m_sq
|
161
166
|
# building_data.merge!(cost_result['envelope'].select{|k,v| k!='construction_costs' && k!='total_envelope_cost'})
|
162
167
|
# building_data.merge!(cost_result['shw'].select{|k,v| k!='shw_total'})
|
@@ -164,6 +169,120 @@ class BTAPData
|
|
164
169
|
return building_data
|
165
170
|
end
|
166
171
|
|
172
|
+
def net_present_value(npv_start_year, npv_end_year, npv_discount_rate)
|
173
|
+
|
174
|
+
# Find end year in the neb data
|
175
|
+
neb_header = CSV.read(@neb_prices_csv_file_name, headers: true).headers
|
176
|
+
neb_header.delete_if { |item| ["building_type", "province", "fuel_type"].include?(item) } # remove "building_type", "province", "fuel_type" from neb_header in order to have only years in neb_header
|
177
|
+
neb_header.map(&:to_f) #convert years to float
|
178
|
+
year_max = neb_header.max
|
179
|
+
|
180
|
+
# Convert a string to a float
|
181
|
+
if npv_start_year.instance_of?(String) && npv_start_year != 'NECB_Default' && npv_start_year != 'none'
|
182
|
+
npv_start_year = npv_start_year.to_f
|
183
|
+
end
|
184
|
+
if npv_end_year.instance_of?(String) && npv_end_year != 'NECB_Default' && npv_end_year != 'none'
|
185
|
+
npv_end_year = npv_end_year.to_f
|
186
|
+
end
|
187
|
+
if npv_discount_rate.instance_of?(String) && npv_discount_rate != 'NECB_Default' && npv_discount_rate != 'none'
|
188
|
+
npv_discount_rate = npv_discount_rate.to_f
|
189
|
+
end
|
190
|
+
|
191
|
+
# Set default npv_start_year as 2022, npv_end_year as 2041, npv_discount_rate as 3%
|
192
|
+
if npv_start_year == 'NECB_Default' || npv_start_year == nil || npv_start_year == 'none'
|
193
|
+
npv_start_year = 2022
|
194
|
+
end
|
195
|
+
if npv_end_year == 'NECB_Default' || npv_end_year == nil || npv_end_year == 'none'
|
196
|
+
npv_end_year = 2041
|
197
|
+
end
|
198
|
+
if npv_discount_rate == 'NECB_Default' || npv_discount_rate == nil || npv_discount_rate == 'none'
|
199
|
+
npv_discount_rate = 0.03
|
200
|
+
end
|
201
|
+
|
202
|
+
# Set npv_end_year as year_max if users' input > neb's end year
|
203
|
+
if npv_end_year > year_max.to_f
|
204
|
+
npv_end_year = year_max.to_f
|
205
|
+
warn "WARNING: Your npv_end_year for the calculation of net present value is larger than that in Canada Energy Regulator (CER) (i.e. #{year_max}). So, npv_end_year has been reset as #{year_max}."
|
206
|
+
end
|
207
|
+
# puts "npv_start_year is #{npv_start_year}"
|
208
|
+
# puts "npv_end_year is #{npv_end_year}"
|
209
|
+
# puts "npv_discount_rate is #{npv_discount_rate}"
|
210
|
+
|
211
|
+
# Get energy end-use prices (CER data from https://apps.cer-rec.gc.ca/ftrppndc/dflt.aspx?GoCTemplateCulture=en-CA)
|
212
|
+
@neb_prices_csv_file_name = "#{File.dirname(__FILE__)}/neb_end_use_prices.csv"
|
213
|
+
|
214
|
+
# Create a hash of the neb data.
|
215
|
+
neb_data = CSV.parse(File.read(@neb_prices_csv_file_name), headers: true, converters: :numeric).map(&:to_h)
|
216
|
+
|
217
|
+
# Find which province the proposed building is located in
|
218
|
+
building_type = 'Commercial'
|
219
|
+
geography_data = climate_data
|
220
|
+
province_abbreviation = geography_data['location_state_province_region']
|
221
|
+
province = @standards_data['province_map'][province_abbreviation]
|
222
|
+
|
223
|
+
# Note: If there is on-site energy generation (e.g. PV), it should be considered in the calculation of EUI for the calculation of energy use cost and NPV.
|
224
|
+
# To do so, it has been assumed that on-site energy generation is only for electricity.
|
225
|
+
# Electricity EUI of a building is re-calculated for NPV. It will be: ['energy_eui_electricity_gj_per_m_sq' - ('total_site_eui_gj_per_m_sq' - 'net_site_eui_gj_per_m_sq')]
|
226
|
+
# Note that if there is no on-site energy generation, 'total_site_eui_gj_per_m_sq' and 'net_site_eui_gj_per_m_sq' will be equal.
|
227
|
+
# Note: 'total_site_eui_gj_per_m_sq' is the gross energy consumed by the building (REF: https://unmethours.com/question/25416/what-is-the-difference-between-site-energy-and-source-energy/)
|
228
|
+
# Note: 'net_site_eui_gj_per_m_sq' is the final energy consumed by the building after accounting for on-site energy generations (e.g. PV) (REF: https://unmethours.com/question/25416/what-is-the-difference-between-site-energy-and-source-energy/)
|
229
|
+
|
230
|
+
# Calculate npv of electricity
|
231
|
+
onsite_elec_generation = @btap_data['total_site_eui_gj_per_m_sq'] - @btap_data['net_site_eui_gj_per_m_sq']
|
232
|
+
if onsite_elec_generation > 0.0
|
233
|
+
eui_elec = @btap_data['energy_eui_electricity_gj_per_m_sq'] - onsite_elec_generation
|
234
|
+
else
|
235
|
+
eui_elec = @btap_data['energy_eui_electricity_gj_per_m_sq']
|
236
|
+
end
|
237
|
+
# puts "onsite_elec_generation is #{onsite_elec_generation}"
|
238
|
+
# puts "eui_elec is #{eui_elec}"
|
239
|
+
row = neb_data.detect do |data|
|
240
|
+
(data['building_type'] == building_type) && (data['province'] == province) && (data['fuel_type'] == 'Electricity')
|
241
|
+
end
|
242
|
+
npv_elec = 0.0
|
243
|
+
year_index = 1.0
|
244
|
+
if eui_elec > 0.0
|
245
|
+
for year in npv_start_year.to_int..npv_end_year.to_int
|
246
|
+
# puts "year, #{year}, #{row[year.to_s]}, year_index, #{year_index}"
|
247
|
+
npv_elec += (eui_elec * row[year.to_s]) / (1+npv_discount_rate)**year_index
|
248
|
+
year_index += 1.0
|
249
|
+
end
|
250
|
+
end
|
251
|
+
# puts "npv_elec is #{npv_elec}"
|
252
|
+
|
253
|
+
# Calculate npv of natural gas
|
254
|
+
eui_ngas= @btap_data['energy_eui_natural_gas_gj_per_m_sq']
|
255
|
+
row = neb_data.detect do |data|
|
256
|
+
(data['building_type'] == building_type) && (data['province'] == province) && (data['fuel_type'] == 'Natural Gas')
|
257
|
+
end
|
258
|
+
npv_ngas = 0.0
|
259
|
+
year_index = 1.0
|
260
|
+
for year in npv_start_year.to_int..npv_end_year.to_int
|
261
|
+
npv_ngas += (eui_ngas * row[year.to_s]) / (1+npv_discount_rate)**year_index
|
262
|
+
year_index += 1.0
|
263
|
+
end
|
264
|
+
# puts "npv_ngas is #{npv_ngas}"
|
265
|
+
|
266
|
+
# Calculate npv of oil
|
267
|
+
eui_oil= @btap_data['energy_eui_additional_fuel_gj_per_m_sq']
|
268
|
+
row = neb_data.detect do |data|
|
269
|
+
(data['building_type'] == building_type) && (data['province'] == province) && (data['fuel_type'] == 'Oil')
|
270
|
+
end
|
271
|
+
npv_oil = 0.0
|
272
|
+
year_index = 1.0
|
273
|
+
for year in npv_start_year.to_int..npv_end_year.to_int
|
274
|
+
npv_oil += (eui_oil * row[year.to_s]) / (1+npv_discount_rate)**year_index
|
275
|
+
year_index += 1.0
|
276
|
+
end
|
277
|
+
# puts "npv_oil is #{npv_oil}"
|
278
|
+
|
279
|
+
# Calculate total npv
|
280
|
+
npv_total = @btap_data['cost_equipment_total_cost_per_m_sq'] + npv_elec + npv_ngas + npv_oil
|
281
|
+
|
282
|
+
@btap_data.merge!('npv_total_per_m_sq' => npv_total)
|
283
|
+
|
284
|
+
end
|
285
|
+
|
167
286
|
def envelope(model)
|
168
287
|
data = {}
|
169
288
|
# Get OSM surface information
|
@@ -393,21 +512,8 @@ class BTAPData
|
|
393
512
|
|
394
513
|
def utility(model)
|
395
514
|
economics_data = {}
|
396
|
-
provinces_names_map = { 'QC' => 'Quebec',
|
397
|
-
'NL' => 'Newfoundland and Labrador',
|
398
|
-
'NS' => 'Nova Scotia',
|
399
|
-
'PE' => 'Prince Edward Island',
|
400
|
-
'ON' => 'Ontario',
|
401
|
-
'MB' => 'Manitoba',
|
402
|
-
'SK' => 'Saskatchewan',
|
403
|
-
'AB' => 'Alberta',
|
404
|
-
'BC' => 'British Columbia',
|
405
|
-
'YT' => 'Yukon',
|
406
|
-
'NT' => 'Northwest Territories',
|
407
|
-
'NB' => 'New Brunswick',
|
408
|
-
'NU' => 'Nunavut' }
|
409
515
|
building_type = 'Commercial'
|
410
|
-
province =
|
516
|
+
province = @standards_data['province_map'][model.getWeatherFile.stateProvinceRegion]
|
411
517
|
neb_eplus_fuel_map = {'Natural Gas' => {eplus_fuel_name: 'NaturalGas',
|
412
518
|
eplus_table_name: 'Annual and Peak Values - Natural Gas',
|
413
519
|
eplus_row_name: 'NaturalGas:Facility',
|
@@ -432,7 +538,7 @@ class BTAPData
|
|
432
538
|
(data['province'] == province) &&
|
433
539
|
(data['fuel_type'] == neb_fuel)
|
434
540
|
end
|
435
|
-
neb_fuel_cost = row['
|
541
|
+
neb_fuel_cost = row['2021']
|
436
542
|
fuel_consumption_gj = 0.0
|
437
543
|
sql_command = "SELECT Value FROM tabulardatawithstrings
|
438
544
|
WHERE ReportName='EnergyMeters'
|
@@ -1688,19 +1794,19 @@ class BTAPData
|
|
1688
1794
|
{ "province": 'SK', "fuel_type": 'Propane', "CO2eq Emissions (kg/MBtu)": 64.25, "CO2eq Emissions (g/m3)": 1548.00 },
|
1689
1795
|
{ "province": 'YT', "fuel_type": 'Propane', "CO2eq Emissions (kg/MBtu)": 64.25, "CO2eq Emissions (g/m3)": 1548.00 },
|
1690
1796
|
|
1691
|
-
{ "province": 'AB', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1692
|
-
{ "province": 'BC', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1693
|
-
{ "province": 'MB', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 0.
|
1694
|
-
{ "province": 'NB', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1695
|
-
{ "province": 'NL', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1797
|
+
{ "province": 'AB', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 202.23, "CO2eq Emissions (g/m3)": 690.0 },
|
1798
|
+
{ "province": 'BC', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 3.84, "CO2eq Emissions (g/m3)": 13.1 },
|
1799
|
+
{ "province": 'MB', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 0.41, "CO2eq Emissions (g/m3)": 1.4 },
|
1800
|
+
{ "province": 'NB', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 84.99, "CO2eq Emissions (g/m3)": 290.0 },
|
1801
|
+
{ "province": 'NL', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 7.91, "CO2eq Emissions (g/m3)": 27.0 },
|
1696
1802
|
{ "province": 'NT', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 46.89, "CO2eq Emissions (g/m3)": 160.0 },
|
1697
|
-
{ "province": 'NS', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1698
|
-
{ "province": 'NU', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1699
|
-
{ "province": 'ON', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1700
|
-
{ "province": 'PE', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1701
|
-
{ "province": 'QC', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 0.
|
1702
|
-
{ "province": 'SK', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1703
|
-
{ "province": 'YT', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)":
|
1803
|
+
{ "province": 'NS', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 216.88, "CO2eq Emissions (g/m3)": 740.0 },
|
1804
|
+
{ "province": 'NU', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 260.84, "CO2eq Emissions (g/m3)": 890.0 },
|
1805
|
+
{ "province": 'ON', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 8.79, "CO2eq Emissions (g/m3)": 30.0 },
|
1806
|
+
{ "province": 'PE', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 84.99, "CO2eq Emissions (g/m3)": 290.0 },
|
1807
|
+
{ "province": 'QC', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 0.47, "CO2eq Emissions (g/m3)": 1.6 },
|
1808
|
+
{ "province": 'SK', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 219.81, "CO2eq Emissions (g/m3)": 750.0 },
|
1809
|
+
{ "province": 'YT', "fuel_type": 'Electricity', "CO2eq Emissions (kg/MBtu)": 23.15, "CO2eq Emissions (g/m3)": 79.0 }
|
1704
1810
|
]
|
1705
1811
|
mbtu_to_gj = 1.05505585
|
1706
1812
|
factor = ghg_data.detect { |item| (item[:province] == province) && (item[:fuel_type] == fuel_type) }
|
@@ -1805,7 +1911,7 @@ class BTAPData
|
|
1805
1911
|
|
1806
1912
|
### Get weather file name
|
1807
1913
|
weather_file = model.weatherFile.get.path.get.to_s
|
1808
|
-
weather_file = weather_file.split('/')[-1]
|
1914
|
+
# weather_file = weather_file.split('/')[-1]
|
1809
1915
|
|
1810
1916
|
### Cooling Degree Days, base 50degF
|
1811
1917
|
cdd10_degree_c_days = BTAP::Environment::WeatherFile.new(weather_file).cdd10
|
@@ -76,6 +76,11 @@ class BTAPDatapoint
|
|
76
76
|
@options[:btap_costing_git_revision] = Git::Revision.commit_short
|
77
77
|
@options[:os_git_revision] = OpenstudioStandards.git_revision
|
78
78
|
|
79
|
+
# Get users' inputs for the parameters needed for the calculation af net present value
|
80
|
+
@npv_start_year = @options[:npv_start_year]
|
81
|
+
@npv_end_year = @options[:npv_end_year]
|
82
|
+
@npv_discount_rate = @options[:npv_discount_rate]
|
83
|
+
|
79
84
|
# Save configuration to temp folder.
|
80
85
|
File.open(File.join(@dp_temp_folder, 'run_options.yml'), 'w') { |file| file.write(@options.to_yaml) }
|
81
86
|
begin
|
@@ -100,7 +105,11 @@ class BTAPDatapoint
|
|
100
105
|
@standard.set_output_meters(model: model, output_meters: @options[:output_meters])
|
101
106
|
climate_zone = 'NECB HDD Method'
|
102
107
|
model.getYearDescription.setDayofWeekforStartDay('Sunday')
|
103
|
-
|
108
|
+
epw_file = @options[:epw_file]
|
109
|
+
epw_dir = nil
|
110
|
+
local_epw_file_path = File.join(input_folder_cache,@options[:epw_file])
|
111
|
+
epw_dir = input_folder_cache if File.exists? local_epw_file_path
|
112
|
+
@standard.model_add_design_days_and_weather_file(model, climate_zone, epw_file, epw_dir) # Standards
|
104
113
|
@standard.model_add_ground_temperatures(model, nil, climate_zone)
|
105
114
|
else
|
106
115
|
# Otherwise modify osm input with options.
|
@@ -228,7 +237,10 @@ class BTAPDatapoint
|
|
228
237
|
@btap_data = BTAPData.new(model: model,
|
229
238
|
runner: nil,
|
230
239
|
cost_result: @cost_result,
|
231
|
-
qaqc: @qaqc
|
240
|
+
qaqc: @qaqc,
|
241
|
+
npv_start_year: @npv_start_year,
|
242
|
+
npv_end_year: @npv_end_year,
|
243
|
+
npv_discount_rate: @npv_discount_rate).btap_data
|
232
244
|
|
233
245
|
# Write Files
|
234
246
|
File.open(File.join(@dp_temp_folder, 'btap_data.json'), 'w') { |f| f.write(JSON.pretty_generate(@btap_data.sort.to_h, allow_nan: true)) }
|
@@ -270,8 +282,8 @@ class BTAPDatapoint
|
|
270
282
|
end
|
271
283
|
|
272
284
|
def s3_copy_file_to_s3(bucket_name:, source_file:, target_file:, n: 0)
|
273
|
-
#
|
274
|
-
#
|
285
|
+
#require 'aws-sdk-core'
|
286
|
+
#require 'aws-sdk-s3'
|
275
287
|
Aws.use_bundled_cert!
|
276
288
|
s3_resource = Aws::S3::Resource.new(region: 'ca-central-1')
|
277
289
|
|