openstudio-standards 0.8.4 → 0.8.5.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/geometry/ASHRAECollege.osm +30 -30
- data/data/geometry/ASHRAECourthouse.osm +22 -22
- data/data/geometry/ASHRAESmallOfficeDetailed.osm +2 -2
- data/data/geometry/DEER_Asm.osm +1 -1
- data/data/geometry/DEER_ECC.osm +1 -1
- data/data/geometry/DEER_EPr.osm +1 -1
- data/data/geometry/DEER_ERC.osm +1 -1
- data/data/geometry/DEER_ESe.osm +1 -1
- data/data/geometry/DEER_EUn.osm +1 -1
- data/data/geometry/DEER_Hsp.osm +1 -1
- data/data/geometry/DEER_Htl.osm +1 -1
- data/data/geometry/DEER_MBT.osm +1 -1
- data/data/geometry/DEER_MFm.osm +1 -1
- data/data/geometry/DEER_Nrs.osm +1 -1
- data/data/geometry/DEER_OfL.osm +1 -1
- data/data/geometry/DEER_OfS.osm +1 -1
- data/data/geometry/DEER_RFF.osm +1 -1
- data/data/geometry/DEER_RSD.osm +1 -1
- data/data/geometry/DEER_Rt3.osm +1 -1
- data/data/geometry/DEER_RtS.osm +1 -1
- data/data/standards/export_OpenStudio_libraries.rb +2 -3
- data/data/standards/test_performance_expected_dd_results.csv +42 -42
- data/lib/openstudio-standards/btap/NECB_building_types.csv +35 -0
- data/lib/openstudio-standards/btap/NECB_space_types.csv +109 -0
- data/lib/openstudio-standards/btap/activity.rb +480 -0
- data/lib/openstudio-standards/btap/attributes.rb +166 -0
- data/lib/openstudio-standards/btap/bridging.rb +561 -1402
- data/lib/openstudio-standards/btap/btap.rb +4 -2
- data/lib/openstudio-standards/btap/btap_test_helper.rb +86 -0
- data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +177 -0
- data/lib/openstudio-standards/btap/{costing/common_paths.rb → common_paths.rb} +14 -11
- data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
- data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
- data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
- data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting.csv +59 -59
- data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_hvac.csv +1019 -1032
- data/lib/openstudio-standards/btap/costing/btap_costing.rb +3 -7
- data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +1 -5
- data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +5 -4
- data/lib/openstudio-standards/btap/costing/dcv_costing.rb +1 -1
- data/lib/openstudio-standards/btap/costing/envelope_costing.rb +112 -181
- data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +4 -4
- data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +2 -1
- data/lib/openstudio-standards/btap/costing/lighting_costing.rb +3 -3
- data/lib/openstudio-standards/btap/costing/test_list.txt +15 -17
- data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +10 -9
- data/lib/openstudio-standards/btap/geometry.rb +86 -6
- data/lib/openstudio-standards/btap/structure.rb +657 -0
- data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
- data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
- data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
- data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
- data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
- data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
- data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
- data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
- data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
- data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
- data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
- data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
- data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
- data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
- data/lib/openstudio-standards/hvac/components/component.rb +39 -0
- data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
- data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
- data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
- data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
- data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
- data/lib/openstudio-standards/hvac/conversions.rb +222 -0
- data/lib/openstudio-standards/hvac/curves.rb +192 -0
- data/lib/openstudio-standards/hvac/helpers.rb +357 -0
- data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
- data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
- data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
- data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
- data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
- data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
- data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
- data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
- data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
- data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
- data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
- data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
- data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
- data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
- data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
- data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
- data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
- data/lib/openstudio-standards/standards/Standards.Model.rb +6 -11
- data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
- data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
- data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
- 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 +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
- 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 +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
- 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 +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
- data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
- data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +19 -10
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +69 -92
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +2 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +32 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +18 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +5 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +2 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +30 -141
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +233 -112
- data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
- data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +16 -4
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +65 -42
- data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
- data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/stat_file.rb +2 -2
- data/lib/openstudio-standards.rb +55 -38
- metadata +106 -66
- data/lib/openstudio-standards/btap/costing/common_resources/constructions_glazing.csv +0 -61
- data/lib/openstudio-standards/btap/costing/common_resources/costs.csv +0 -1904
- data/lib/openstudio-standards/hvac/components/create.rb +0 -169
- data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
- data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
- data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
- data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/ConstructionProperties.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/Constructions.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/construction_sets.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/constructions_opaque.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/costs_local_factors.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/hvac_vent_ahu.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting_sets.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/locations.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_glazing.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_lighting.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_opaque.csv +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *********************************************************************
|
|
2
|
-
# * Copyright (c) 2008-
|
|
2
|
+
# * Copyright (c) 2008-2025, Natural Resources Canada
|
|
3
3
|
# * All rights reserved.
|
|
4
4
|
# *
|
|
5
5
|
# * This library is free software; you can redistribute it and/or
|
|
@@ -22,7 +22,10 @@ require 'fileutils'
|
|
|
22
22
|
require 'singleton'
|
|
23
23
|
require 'find'
|
|
24
24
|
require 'date'
|
|
25
|
+
require_relative 'attributes'
|
|
25
26
|
require_relative 'fileio'
|
|
27
|
+
require_relative 'activity'
|
|
28
|
+
require_relative 'structure'
|
|
26
29
|
require_relative 'geometry'
|
|
27
30
|
require_relative 'envelope'
|
|
28
31
|
require_relative 'bridging'
|
|
@@ -341,4 +344,3 @@ module BTAP
|
|
|
341
344
|
end
|
|
342
345
|
end
|
|
343
346
|
#module BTAP
|
|
344
|
-
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require 'minitest'
|
|
3
|
+
|
|
4
|
+
# BTAPResultsHelper
|
|
5
|
+
# Helper methods for the BtapResults suite of tests.
|
|
6
|
+
class BTAPResultsHelper < Minitest::Test
|
|
7
|
+
@@cached = false
|
|
8
|
+
|
|
9
|
+
def initialize(test_path:, model_name:, run_dir:)
|
|
10
|
+
@test_path = File.expand_path(test_path)
|
|
11
|
+
@test_filename = File.basename(test_path, '.rb')
|
|
12
|
+
@model_name = model_name
|
|
13
|
+
@run_dir = File.expand_path(run_dir)
|
|
14
|
+
cached_folder = ""
|
|
15
|
+
@model_cached_path = cached_folder + "/output.osm"
|
|
16
|
+
@sql_cached_path = cached_folder + "/eplusout.sql"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class << self
|
|
20
|
+
def cached
|
|
21
|
+
return @@cached
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def cache_osm_and_sql(model_path:, sql_path:)
|
|
26
|
+
FileUtils.cp(model_path, @model_cached_path)
|
|
27
|
+
FileUtils.cp(sql_path, @sql_cached_path)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def get_analysis(output_folder:, template:)
|
|
31
|
+
return BTAPNoSimAnalysis.new(
|
|
32
|
+
model_path: @model_cached_path,
|
|
33
|
+
sql_file_path: @sql_cached_path,
|
|
34
|
+
output_folder: output_folder,
|
|
35
|
+
template: template,
|
|
36
|
+
datapoint_id: 'test_run')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def evaluate_regression_files(test_instance:, cost_result:)
|
|
40
|
+
cost_result_json_path = "#{@run_dir}/cost_results.json"
|
|
41
|
+
cost_list_json_path = "#{@run_dir}/btap_items.json"
|
|
42
|
+
test_instance.assert(File.exist?(cost_result_json_path), "Could not find costing json at this path:#{cost_result_json_path}")
|
|
43
|
+
regression_files_folder = "#{File.dirname(@test_path)}/regression_files"
|
|
44
|
+
expected_result_filename = "#{regression_files_folder}/#{@model_name}_expected_result.cost.json"
|
|
45
|
+
test_result_filename = "#{regression_files_folder}/#{@model_name}_test_result.cost.json"
|
|
46
|
+
|
|
47
|
+
FileUtils.rm(test_result_filename) if File.exist?(test_result_filename)
|
|
48
|
+
if File.exist?(expected_result_filename)
|
|
49
|
+
unless FileUtils.compare_file(cost_result_json_path, expected_result_filename)
|
|
50
|
+
FileUtils.cp(cost_result_json_path, test_result_filename)
|
|
51
|
+
test_instance.assert(false, "Regression test for #{@model_name} produces differences. Examine expected and test result differences in the #{File.dirname(@test_filename)}/regression_files folder ")
|
|
52
|
+
end
|
|
53
|
+
else
|
|
54
|
+
puts "No expected test file...Generating expected file #{expected_result_filename}. Please verify."
|
|
55
|
+
FileUtils.cp(cost_result_json_path, expected_result_filename)
|
|
56
|
+
end
|
|
57
|
+
puts "Regression test for #{@model_name} passed."
|
|
58
|
+
|
|
59
|
+
# Do comparison of direct btap_costing results and those derived from the itemized cost list
|
|
60
|
+
# Check if an itemized cost list file exists. If it exists, do the comparison. If not, Ignore the comparison.
|
|
61
|
+
if File.exist?(cost_list_json_path)
|
|
62
|
+
# Get the itemized cost list file.
|
|
63
|
+
cost_list = JSON.parse(File.read(cost_list_json_path))
|
|
64
|
+
# Cost the building based on the itemized cost list.
|
|
65
|
+
cost_list_output = BTAPCosting.new().cost_list_items(btap_items: cost_list)
|
|
66
|
+
# Get the detailed btap_costing result file:
|
|
67
|
+
cost_result = JSON.parse(File.read(cost_result_json_path))
|
|
68
|
+
cost_sum = cost_result['totals']
|
|
69
|
+
# Compare the results and let the user know if there are differences. Do not fail test if there are.
|
|
70
|
+
puts("")
|
|
71
|
+
puts("Comparing BTAP_Costing results and itemized costing list cost results:")
|
|
72
|
+
puts("Envelope Cost Difference: #{cost_sum['envelope'].to_f - cost_list_output['envelope'].to_f}")
|
|
73
|
+
puts("Lighting Cost Difference: #{cost_sum['lighting'].to_f - cost_list_output['lighting'].to_f}")
|
|
74
|
+
puts("Heating and Cooling Cost Difference: #{cost_sum['heating_and_cooling'].to_f - cost_list_output['heating_and_cooling'].to_f}")
|
|
75
|
+
puts("SHW Cost Difference: #{cost_sum['shw'].to_f - cost_list_output['shw'].to_f}")
|
|
76
|
+
puts("Ventilation Cost Difference: #{cost_sum['ventilation'].to_f - cost_list_output['ventilation'].to_f}")
|
|
77
|
+
cost_sum['renewables'].nil? ? sum_renew = 0.00 : sum_renew = cost_sum['renewables'].to_f
|
|
78
|
+
puts("Renewables Cost Difference: #{sum_renew - cost_list_output['renewables'].to_f}")
|
|
79
|
+
if cost_sum['grand_total'] == cost_list_output['grand_total']
|
|
80
|
+
puts("No difference in costing between BTAP_Costing results and itemized cost list results.")
|
|
81
|
+
else
|
|
82
|
+
puts("Total Cost Difference: #{cost_sum['grand_total'].to_f - cost_list_output['grand_total'].to_f}")
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
class BTAPCarbon
|
|
2
|
+
def initialize(attributes:, standards_data:)
|
|
3
|
+
@carbon_database = {}
|
|
4
|
+
@costing_database = CostingDatabase.instance
|
|
5
|
+
@cp = CommonPaths.instance
|
|
6
|
+
@attributes = attributes
|
|
7
|
+
@carbon_report = {}
|
|
8
|
+
@frame_m_to_kg = standards_data["constants"]["glazing_frame_m_to_kg"]
|
|
9
|
+
|
|
10
|
+
# Build the carbon database.
|
|
11
|
+
carbon_opaque = CSV.read(@cp.carbon_opaque_path)
|
|
12
|
+
@carbon_database["opaque"] = Array.new
|
|
13
|
+
|
|
14
|
+
1.upto carbon_opaque.length - 1 do |i|
|
|
15
|
+
row = carbon_opaque[i]
|
|
16
|
+
index = row.each
|
|
17
|
+
item = Hash.new
|
|
18
|
+
|
|
19
|
+
item["materials_opaque_id"] = index.next
|
|
20
|
+
item["description"] = index.next
|
|
21
|
+
item["type"] = index.next
|
|
22
|
+
item["quantity"] = index.next.to_f
|
|
23
|
+
item["per m2"] = index.next.to_f
|
|
24
|
+
item["Product Category"] = index.next
|
|
25
|
+
item["Embodied Carbon (A1-A5)"] = index.next.to_f
|
|
26
|
+
item["Embodied Carbon (A-C)"] = index.next.to_f
|
|
27
|
+
item["Environmental Product Declaration (EPD)"] = index.next
|
|
28
|
+
|
|
29
|
+
@carbon_database["opaque"] << item
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
carbon_glazing = CSV.read(@cp.carbon_glazing_path)
|
|
33
|
+
@carbon_database["glazing"] = Array.new
|
|
34
|
+
|
|
35
|
+
1.upto carbon_glazing.length - 1 do |i|
|
|
36
|
+
row = carbon_glazing[i]
|
|
37
|
+
index = row.each
|
|
38
|
+
item = Hash.new
|
|
39
|
+
|
|
40
|
+
item["materials_glazing_id"] = index.next
|
|
41
|
+
item["description"] = index.next
|
|
42
|
+
item["per m2"] = index.next.to_f
|
|
43
|
+
item["Embodied Carbon (A1-A5)"] = index.next.to_f
|
|
44
|
+
item["Embodied Carbon (A-C)"] = index.next.to_f
|
|
45
|
+
item["Environmental Product Declaration (EPD)"] = index.next
|
|
46
|
+
|
|
47
|
+
@carbon_database["glazing"] << item
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
carbon_frame = CSV.read(@cp.carbon_frame_path)
|
|
51
|
+
@carbon_database["frame"] = Array.new
|
|
52
|
+
|
|
53
|
+
1.upto carbon_frame.length - 1 do |i|
|
|
54
|
+
row = carbon_frame[i]
|
|
55
|
+
index = row.each
|
|
56
|
+
item = Hash.new
|
|
57
|
+
|
|
58
|
+
item["materials_glazing_id"] = index.next
|
|
59
|
+
item["description"] = index.next
|
|
60
|
+
item["per m2"] = index.next.to_f
|
|
61
|
+
item["Embodied Carbon (A1-A5)"] = index.next.to_f
|
|
62
|
+
item["Embodied Carbon (A-C)"] = index.next.to_f
|
|
63
|
+
item["Environmental Product Declaration (EPD)"] = index.next
|
|
64
|
+
|
|
65
|
+
@carbon_database["frame"] << item
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def audit_embodied_carbon
|
|
70
|
+
@attributes.surface_types.each do |surface_type|
|
|
71
|
+
@carbon_report["#{surface_type.underscore}_area_m2"] = 0.0
|
|
72
|
+
@carbon_report["#{surface_type.underscore}_carbon"] = 0.0
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
@attributes.spaces.each do |space|
|
|
76
|
+
@attributes.surface_types.each do |surface_type|
|
|
77
|
+
space.surfaces_hash[surface_type].each do |surface|
|
|
78
|
+
surface_area = surface.netArea * space.thermalZone.get.multiplier
|
|
79
|
+
@carbon_report["#{surface_type.underscore}_area_m2"] = \
|
|
80
|
+
(@carbon_report["#{surface_type.underscore}_area_m2"] + surface_area).round(2)
|
|
81
|
+
|
|
82
|
+
# Get the carbon emissions for each material in the space.
|
|
83
|
+
if surface.construction_hash.nil?
|
|
84
|
+
emissions = 0.0
|
|
85
|
+
else
|
|
86
|
+
emissions = get_carbon_emissions(surface.construction_hash, surface, surface_area)
|
|
87
|
+
construction = surface.construction_hash
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Calculate the carbon emissions
|
|
91
|
+
@carbon_report["#{surface_type.underscore}_carbon"] = \
|
|
92
|
+
(@carbon_report["#{surface_type.underscore}_carbon"] + emissions).round(2)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Get the total emissions from all the surface types.
|
|
98
|
+
total_emissions = 0
|
|
99
|
+
@attributes.surface_types.each do |surface_type|
|
|
100
|
+
total_emissions += @carbon_report["#{surface_type.underscore}_carbon"]
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
@carbon_report["total"] = total_emissions
|
|
104
|
+
return @carbon_report
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Retrieve the carbon emissions given a surface, its construction, and its area.
|
|
108
|
+
def get_carbon_emissions(construction, surface, surface_area)
|
|
109
|
+
total_emissions = 0.0
|
|
110
|
+
materials_file = "materials_#{construction["type"]}"
|
|
111
|
+
id_column = materials_file + "_id"
|
|
112
|
+
id_layers_column = "material_#{construction["type"]}_id_layers"
|
|
113
|
+
|
|
114
|
+
construction[id_layers_column].split(',').each do |material_id|
|
|
115
|
+
|
|
116
|
+
# Locate the material entry in the carbon database
|
|
117
|
+
material_carbon = @carbon_database[construction["type"]].find { |row|
|
|
118
|
+
row[id_column] == material_id }["Embodied Carbon (A-C)"]
|
|
119
|
+
|
|
120
|
+
if material_carbon.nil?
|
|
121
|
+
raise("Error: Could not find material with ID #{material_id} in the carbon database.")
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# If the material is glazing, the frame must be calculated by retrieving the perimeter of the window
|
|
125
|
+
# and converting according to the correct attributes of the window.
|
|
126
|
+
if construction["type"] == "glazing"
|
|
127
|
+
fenestration_type = construction["fenestration_type"]
|
|
128
|
+
|
|
129
|
+
# Skip skylights and doors since we don't have the data for them.
|
|
130
|
+
# Only consider fixed and operable windows.
|
|
131
|
+
if fenestration_type != "FixedWindow" and fenestration_type != "OperableWindow"
|
|
132
|
+
puts "Fenestration type #{fenestration_type} is not defined for carbon calculation, skipping this component."
|
|
133
|
+
next
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
material_frame = @carbon_database["frame"].find { |row|
|
|
137
|
+
row[id_column] == material_id }["Embodied Carbon (A-C)"]
|
|
138
|
+
|
|
139
|
+
# Get the materials_glazing entry from the costing database to access the number of panes the window has.
|
|
140
|
+
material_costing = @costing_database["raw"][materials_file].find { |row| row[id_column] == material_id }
|
|
141
|
+
|
|
142
|
+
if material_costing.nil?
|
|
143
|
+
raise("Error: Could not find material with ID #{material_id} in the costing database.")
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
fenestration_number_of_panes = material_costing["fenestration_number_of_panes"]
|
|
147
|
+
|
|
148
|
+
# Try to get the correct frame material.
|
|
149
|
+
frame_material = nil
|
|
150
|
+
construction_component = construction["component"].downcase
|
|
151
|
+
construction_description = construction["description"].downcase
|
|
152
|
+
["vinyl-wood", "plastic", "aluminum"].each do |material|
|
|
153
|
+
if material in construction_component
|
|
154
|
+
frame_material = material
|
|
155
|
+
break
|
|
156
|
+
elsif material in construction_description
|
|
157
|
+
frame_material = material
|
|
158
|
+
break
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
if frame_material.nil?
|
|
163
|
+
raise("Error: Could not find frame material for glazing ID #{material_id} in constructions_glazing.csv.")
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Get the conversion factor for the window frame and add it to the total emissions.
|
|
167
|
+
conversion_factor = @frame_m_to_kg[frame_material][fenestration_type][fenestration_number_of_panes]
|
|
168
|
+
perimeter = BTAP::Geometry::Surfaces.getSurfacePerimeterFromVertices(vertices: surface.vertices)
|
|
169
|
+
total_emissions += material_frame * perimeter * conversion_factor
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
total_emissions += material_carbon * surface_area
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
return total_emissions
|
|
176
|
+
end
|
|
177
|
+
end
|
|
@@ -24,8 +24,10 @@ class CommonPaths
|
|
|
24
24
|
attr_accessor :costs_path
|
|
25
25
|
attr_accessor :costs_local_factors_path
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
attr_reader :
|
|
27
|
+
# Embodied carbon data
|
|
28
|
+
attr_reader :carbon_opaque_path
|
|
29
|
+
attr_reader :carbon_glazing_path
|
|
30
|
+
attr_reader :carbon_frame_path
|
|
29
31
|
|
|
30
32
|
# Other
|
|
31
33
|
attr_reader :error_log
|
|
@@ -33,8 +35,7 @@ class CommonPaths
|
|
|
33
35
|
attr_reader :mech_sizing_data_file
|
|
34
36
|
|
|
35
37
|
def initialize
|
|
36
|
-
|
|
37
|
-
dir_database = "#{dir_relative}/common_resources"
|
|
38
|
+
dir_database = "#{__dir__}/common_resources"
|
|
38
39
|
|
|
39
40
|
@locations_path = "#{dir_database}/locations.csv"
|
|
40
41
|
@construction_sets_path = "#{dir_database}/construction_sets.csv"
|
|
@@ -66,13 +67,15 @@ class CommonPaths
|
|
|
66
67
|
@materials_hvac_path
|
|
67
68
|
]
|
|
68
69
|
|
|
69
|
-
@costs_path
|
|
70
|
-
@costs_local_factors_path
|
|
70
|
+
@costs_path = "#{dir_database}/costs.csv"
|
|
71
|
+
@costs_local_factors_path = "#{dir_database}/costs_local_factors.csv"
|
|
71
72
|
|
|
72
|
-
@
|
|
73
|
+
@carbon_opaque_path = "#{dir_database}/carbon_opaque.csv"
|
|
74
|
+
@carbon_glazing_path = "#{dir_database}/carbon_glazing.csv"
|
|
75
|
+
@carbon_frame_path = "#{dir_database}/carbon_frame.csv"
|
|
73
76
|
|
|
74
|
-
@error_log
|
|
75
|
-
@cost_output_file
|
|
76
|
-
@mech_sizing_data_file
|
|
77
|
+
@error_log = "#{__dir__}/errors.json"
|
|
78
|
+
@cost_output_file = "#{__dir__}/cost_output.json"
|
|
79
|
+
@mech_sizing_data_file = "#{__dir__}/costing/mech_sizing.json"
|
|
77
80
|
end
|
|
78
|
-
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
materials_glazing_id,description,per m2,Embodied Carbon (A1-A5),Embodied Carbon (A-C),Environmental Product Declaration (EPD)
|
|
2
|
+
1,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",1.577,74.325,81.603,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
3
|
+
2,"6' x 7' aluminum patio, tempered glass, zero frame thermal break",2.44,105.126,14.428,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
4
|
+
3,"entrance, door 5'x7', opening 12'x7'-6', electric operator, zero frame thermal break",1.21,33.645,14.061,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
5
|
+
4,"fixed mall front panels, aluminum finish 48' x 9' opening, zero frame thermal break",0.987,29.979,34.366,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
6
|
+
5,"aluminum window: stock 5'x3' including framing and insulated glazing, zero frame thermal break",2.47,73.957,74.74,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
7
|
+
6,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",1.577,61.989,21.861,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
8
|
+
7,"6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs, zero frame thermal break",2.45,53.215,79.335,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
9
|
+
8,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",1.577,30.867,38.24,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
10
|
+
9,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",1.577,71.347,75.847,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
11
|
+
10,"6' x 7' aluminum patio, tempered glass",2.44,54.103,57.343,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
12
|
+
11,"entrance, door 5'x7', opening 12'x7'-6', electric operator",1.21,38.802,64.185,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
13
|
+
12,"fixed mall front panels, aluminum finish 48' x 9' opening",0.987,28.019,20.609,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
14
|
+
13,aluminum window: stock 5'x3' including framing and insulated glazing,2.47,117.479,40.687,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
15
|
+
14,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",1.577,44.207,49.426,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
16
|
+
15,"6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs",2.45,6.292,63.919,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
17
|
+
16,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",1.577,62.329,74.157,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
18
|
+
17,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",1.58,34.727,65.656,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
19
|
+
18,"triple glazed U= 1.6 W/m2-K, 6' x 7' aluminum patio, tempered glass",1.12,37.717,56.548,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
20
|
+
19,"triple glazed U= 1.6 W/m2-K, entrance, door 5'x7', opening 12'x7'-6', electric operator",1.458,37.961,3.095,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
21
|
+
20,"triple glazed U= 1.6 W/m2-K, fixed mall front panels, aluminum finish 48' x 9' opening",1.181,11.762,48.437,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
22
|
+
21,"triple glazed U= 1.6 W/m2-K, aluminum window: stock 5'x3' including framing and insulated glazing",1.15,7.371,61.662,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
23
|
+
22,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",1.58,37.711,81.091,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
24
|
+
23,"triple glazed U= 1.6 W/m2-K, 6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs",2.95,37.719,12.907,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
25
|
+
24,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",1.58,42.808,9.411,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
26
|
+
25,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",2.06,75.551,42.545,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
27
|
+
26,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",2.06,74.951,105.124,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
28
|
+
27,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",2.06,4.912,84.376,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
29
|
+
28,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",2.06,43.099,107.422,"Thermally improved aluminium extrusions (profiles), anodized (Aluminum Extruders Council (AEC))"
|
|
30
|
+
29,bronze film (glass not included) 20% VLT,0.0,0.0,0.0,
|
|
31
|
+
30,bronze film (glass not included) 50% VLT,0.0,0.0,0.0,
|
|
32
|
+
31,Silver film (glass not included) 15% VLT,0.0,0.0,0.0,
|
|
33
|
+
32,Silver film (glass not included) 35% VLT,0.0,0.0,0.0,
|
|
34
|
+
33,Silver film (glass not included) 68% VLT,0.0,0.0,0.0,
|
|
35
|
+
34,Neutral film (glass not included) 20% VLT,0.0,0.0,0.0,
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
materials_glazing_id,description,per m2,Embodied Carbon (A1-A5),Embodied Carbon (A-C),Environmental Product Declaration (EPD)
|
|
2
|
+
1,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",1.0,109.812,123.989,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
3
|
+
2,"6' x 7' aluminum patio, tempered glass, zero frame thermal break",1.0,108.37,15.261,"Argon gas filled insulating glass unit (IGU) with tempered glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
4
|
+
3,"entrance, door 5'x7', opening 12'x7'-6', electric operator, zero frame thermal break",1.0,64.786,27.844,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
5
|
+
4,"fixed mall front panels, aluminum finish 48' x 9' opening, zero frame thermal break",1.0,70.769,83.429,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
6
|
+
5,"aluminum window: stock 5'x3' including framing and insulated glazing, zero frame thermal break",1.0,69.764,72.504,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
7
|
+
6,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",1.0,91.585,33.216,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
8
|
+
7,"6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs, zero frame thermal break",1.0,50.607,77.591,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
9
|
+
8,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",1.0,45.604,58.102,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
10
|
+
9,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",1.0,105.412,115.244,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
11
|
+
10,"6' x 7' aluminum patio, tempered glass",1.0,55.773,60.652,"Argon gas filled insulating glass unit (IGU) with tempered glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
12
|
+
11,"entrance, door 5'x7', opening 12'x7'-6', electric operator",1.0,74.716,127.103,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
13
|
+
12,"fixed mall front panels, aluminum finish 48' x 9' opening",1.0,66.143,50.032,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
14
|
+
13,aluminum window: stock 5'x3' including framing and insulated glazing,1.0,110.817,39.47,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
15
|
+
14,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",1.0,65.314,75.099,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
16
|
+
15,"6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs",1.0,5.983,62.514,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
17
|
+
16,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",1.0,92.088,112.675,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
18
|
+
17,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",1.0,51.21,99.57,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
19
|
+
18,"triple glazed U= 1.6 W/m2-K, 6' x 7' aluminum patio, tempered glass",1.0,298.056,458.834,"Argon gas filled insulating glass unit (IGU) with one laminated and two tempered glass panes, triple glazed, 10-14-6-14-12.76, 71.9 kg/m2 (One Click LCA)"
|
|
20
|
+
19,"triple glazed U= 1.6 W/m2-K, entrance, door 5'x7', opening 12'x7'-6', electric operator",1.0,94.614,7.92,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, triple glazed, 4-14-4-14-4, 30 kg/m2 (One Click LCA)"
|
|
21
|
+
20,"triple glazed U= 1.6 W/m2-K, fixed mall front panels, aluminum finish 48' x 9' opening",1.0,36.191,153.033,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, triple glazed, 4-14-4-14-4, 30 kg/m2 (One Click LCA)"
|
|
22
|
+
21,"triple glazed U= 1.6 W/m2-K, aluminum window: stock 5'x3' including framing and insulated glazing",1.0,23.291,200.07,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, triple glazed, 4-14-4-14-4, 30 kg/m2 (One Click LCA)"
|
|
23
|
+
22,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",1.0,55.61,122.977,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
24
|
+
23,"triple glazed U= 1.6 W/m2-K, 6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs",1.0,46.464,16.326,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, triple glazed, 4-14-4-14-4, 30 kg/m2 (One Click LCA)"
|
|
25
|
+
24,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",1.0,63.127,14.273,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
26
|
+
25,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",1.0,85.451,49.487,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
27
|
+
26,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",1.0,84.772,122.276,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
28
|
+
27,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",1.0,5.556,98.143,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
29
|
+
28,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",1.0,48.746,124.949,"Argon gas filled insulating glass unit (IGU) with clear float glass panes, double glazed, 4-16-4, 20 kg/m2 (One Click LCA)"
|
|
30
|
+
29,bronze film (glass not included) 20% VLT,0.0,0.0,0.0,
|
|
31
|
+
30,bronze film (glass not included) 50% VLT,0.0,0.0,0.0,
|
|
32
|
+
31,Silver film (glass not included) 15% VLT,0.0,0.0,0.0,
|
|
33
|
+
32,Silver film (glass not included) 35% VLT,0.0,0.0,0.0,
|
|
34
|
+
33,Silver film (glass not included) 68% VLT,0.0,0.0,0.0,
|
|
35
|
+
34,Neutral film (glass not included) 20% VLT,0.0,0.0,0.0,
|