openstudio-standards 0.2.12.rc4 → 0.2.12.rc5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/standards/OpenStudio_Standards-ashrae_90_1(space_types).xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/test_performance_expected_dd_results.csv +950 -950
- data/lib/openstudio-standards.rb +8 -1
- data/lib/openstudio-standards/btap/btap.model.rb +1 -1
- data/lib/openstudio-standards/btap/economics.rb +14 -11
- data/lib/openstudio-standards/btap/envelope.rb +185 -257
- data/lib/openstudio-standards/btap/fileio.rb +1 -0
- data/lib/openstudio-standards/btap/geometry.rb +21 -1
- data/lib/openstudio-standards/btap/measures.rb +12 -11
- data/lib/openstudio-standards/btap/schedules.rb +3 -12
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +178 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingDXMultiSpeed.rb +8 -8
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +3 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +3 -3
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +25 -23
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +91 -0
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +20 -2
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +39 -0
- data/lib/openstudio-standards/standards/Standards.Model.rb +29 -0
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +37 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +15 -15
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +15 -15
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +15 -15
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +5963 -2723
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +5917 -2697
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +2011 -1112
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +1946 -1106
- data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/btap_1980to2010.rb +2 -18
- data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/space_types.json +1677 -1005
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +64 -13
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +31 -19
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/curves.json +75 -0
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/heat_pumps.json +16 -16
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/space_types.json +1677 -1005
- data/lib/openstudio-standards/standards/necb/ECMS/data/boiler_set.json +29 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +913 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/equip_eff_lim.json +52 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/erv.json +105 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/furnace_set.json +23 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps.json +803 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps_heating.json +787 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/shw_set.json +29 -0
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +87 -0
- data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +22 -0
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +1593 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +68 -33
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +24 -13
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +104 -99
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +24 -24
- data/lib/openstudio-standards/standards/necb/NECB2011/data/curves.json +50 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/erv.json +31 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/led_lighting_data.json +2028 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +1745 -1297
- data/lib/openstudio-standards/standards/necb/NECB2011/daylighting_control.md +70 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/demand_controlled_ventilation.md +46 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +69 -107
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +24 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +139 -141
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +24 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +344 -234
- data/lib/openstudio-standards/standards/necb/NECB2011/led_lighting.md +51 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/lighting.rb +57 -9
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +1060 -34
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +9 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2015/data/led_lighting_data.json +2883 -0
- data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +2554 -1916
- data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +32 -1
- data/lib/openstudio-standards/standards/necb/NECB2017/data/led_lighting_data.json +2883 -0
- data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +2554 -1916
- data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +29 -0
- data/lib/openstudio-standards/version.rb +1 -1
- metadata +21 -2
data/lib/openstudio-standards.rb
CHANGED
@@ -36,8 +36,10 @@ module OpenstudioStandards
|
|
36
36
|
require_relative "#{stds}/necb/NECB2011/hvac_systems"
|
37
37
|
require_relative "#{stds}/necb/NECB2011/autozone"
|
38
38
|
require_relative "#{stds}/necb/NECB2011/hvac_system_1_single_speed"
|
39
|
+
require_relative "#{stds}/necb/NECB2011/hvac_system_1_multi_speed"
|
39
40
|
require_relative "#{stds}/necb/NECB2011/hvac_system_2_and_5"
|
40
41
|
require_relative "#{stds}/necb/NECB2011/hvac_system_3_and_8_single_speed"
|
42
|
+
require_relative "#{stds}/necb/NECB2011/hvac_system_3_and_8_multi_speed"
|
41
43
|
require_relative "#{stds}/necb/NECB2011/hvac_system_4"
|
42
44
|
require_relative "#{stds}/necb/NECB2011/hvac_system_6"
|
43
45
|
require_relative "#{stds}/necb/NECB2011/service_water_heating"
|
@@ -65,7 +67,12 @@ module OpenstudioStandards
|
|
65
67
|
# NECB QAQC
|
66
68
|
require_relative "#{stds}/necb/NECB2011/qaqc/necb_qaqc.rb"
|
67
69
|
require_relative "#{stds}/necb/NECB2015/qaqc/necb_2015_qaqc.rb"
|
68
|
-
|
70
|
+
|
71
|
+
# ECM development
|
72
|
+
require_relative "#{stds}/necb/ECMS/ecms.rb"
|
73
|
+
require_relative "#{stds}/necb/ECMS/erv.rb"
|
74
|
+
require_relative "#{stds}/necb/ECMS/hvac_systems.rb"
|
75
|
+
|
69
76
|
require_relative "#{stds}/ashrae_90_1/ashrae_90_1"
|
70
77
|
require_relative "#{stds}/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980"
|
71
78
|
require_relative "#{stds}/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/comstock_doe_ref_pre_1980"
|
@@ -180,7 +180,7 @@ class OpenStudio::Model::Model
|
|
180
180
|
#Add baseline
|
181
181
|
models << {:name => 'baseline', :model => model}
|
182
182
|
#Add copies of model with elimination of a characteristic.
|
183
|
-
models << {:name => 'elim_ext_wall', :model => model.clone(true).to_Model
|
183
|
+
models << {:name => 'elim_ext_wall', :model => model.clone(true).to_Model}
|
184
184
|
=begin
|
185
185
|
models << {:name => 'elim_ext_roof', :model => model.clone(true).to_Model.set_all_ext_roof_conductances_to(conductance)}
|
186
186
|
models << {:name => 'elim_ground_floor', :model => model.clone(true).to_Model.set_all_ground_floor_conductances_to(conductance)}
|
@@ -202,17 +202,20 @@ module BTAP
|
|
202
202
|
|
203
203
|
new_construction_set =vintage_construction_set.clone(model).to_DefaultConstructionSet.get
|
204
204
|
#Set conductances to needed values in construction set if possible.
|
205
|
-
BTAP::Resources::Envelope::ConstructionSets::customize_default_surface_construction_set_rsi!(
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
205
|
+
BTAP::Resources::Envelope::ConstructionSets::customize_default_surface_construction_set_rsi!(
|
206
|
+
model: model,
|
207
|
+
name: "#{default_construction_set_name}-modified",
|
208
|
+
default_surface_construction_set: new_construction_set,
|
209
|
+
ext_wall_rsi: ext_wall_rsi, ext_floor_rsi: ext_floor_rsi, ext_roof_rsi: ext_roof_rsi,
|
210
|
+
ground_wall_rsi: ground_wall_rsi, ground_floor_rsi: ground_floor_rsi, ground_roof_rsi: ground_roof_rsi,
|
211
|
+
fixed_window_rsi: fixed_window_rsi, fixed_wind_solar_trans: fixed_wind_solar_trans, fixed_wind_vis_trans: fixed_wind_vis_trans,
|
212
|
+
operable_window_rsi: operable_window_rsi, operable_wind_solar_trans: operable_wind_solar_trans, operable_wind_vis_trans: operable_wind_vis_trans,
|
213
|
+
door_construction_rsi: door_construction_rsi,
|
214
|
+
glass_door_rsi: glass_door_rsi, glass_door_solar_trans: glass_door_solar_trans, glass_door_vis_trans: glass_door_vis_trans,
|
215
|
+
overhead_door_rsi: overhead_door_rsi,
|
216
|
+
skylight_rsi: skylight_rsi, skylight_solar_trans: skylight_solar_trans, skylight_vis_trans: skylight_vis_trans,
|
217
|
+
tubular_daylight_dome_rsi: tubular_daylight_dome_rsi, tubular_daylight_dome_solar_trans: tubular_daylight_dome_solar_trans, tubular_daylight_dome_vis_trans: tubular_daylight_dome_vis_trans,
|
218
|
+
tubular_daylight_diffuser_rsi: tubular_daylight_diffuser_rsi, tubular_daylight_diffuser_solar_trans: tubular_daylight_diffuser_solar_trans, tubular_daylight_diffuser_vis_trans: tubular_daylight_diffuser_vis_trans
|
216
219
|
)
|
217
220
|
|
218
221
|
|
@@ -38,28 +38,28 @@ module BTAP
|
|
38
38
|
#@author phylroy.lopez@nrcan.gc.ca
|
39
39
|
#@param model [OpenStudio::model::Model] A model object
|
40
40
|
def self.remove_all_constructions(model)
|
41
|
-
model.getConstructions().each {|item| item.remove}
|
41
|
+
model.getConstructions().each { |item| item.remove }
|
42
42
|
end
|
43
43
|
|
44
44
|
#This method removes all default surface constructions from model.
|
45
45
|
#@author phylroy.lopez@nrcan.gc.ca
|
46
46
|
#@param model [OpenStudio::model::Model] A model object
|
47
47
|
def self.remove_all_default_surface_constructions(model)
|
48
|
-
model.getDefaultSurfaceConstructionss().each {|item| item.remove}
|
48
|
+
model.getDefaultSurfaceConstructionss().each { |item| item.remove }
|
49
49
|
end
|
50
50
|
|
51
51
|
#This method removes all default subsurface constructions from model.
|
52
52
|
#@author phylroy.lopez@nrcan.gc.ca
|
53
53
|
#@param model [OpenStudio::model::Model] A model object
|
54
54
|
def self.remove_all_default_subsurface_constructions(model)
|
55
|
-
model.getDefaultSubSurfaceConstructionss().each {|item| item.remove}
|
55
|
+
model.getDefaultSubSurfaceConstructionss().each { |item| item.remove }
|
56
56
|
end
|
57
57
|
|
58
58
|
#This method removes all default construction sets from model.
|
59
59
|
#@author phylroy.lopez@nrcan.gc.ca
|
60
60
|
#@param model [OpenStudio::model::Model] A model object
|
61
61
|
def self.remove_all_default_construction_sets(model)
|
62
|
-
model.getDefaultConstructionSets().each {|item| item.remove}
|
62
|
+
model.getDefaultConstructionSets().each { |item| item.remove }
|
63
63
|
model.building.get.resetDefaultConstructionSet()
|
64
64
|
end
|
65
65
|
|
@@ -78,7 +78,7 @@ module BTAP
|
|
78
78
|
wall_construction = model.building.get.defaultConstructionSet.get.defaultInteriorSurfaceConstructions.get.wallConstruction.get
|
79
79
|
BTAP::Geometry::Surfaces::set_surfaces_construction(all_adiabatic_surfaces, wall_construction)
|
80
80
|
names = ""
|
81
|
-
all_adiabatic_surfaces.each {|surface| name = "#{names} , #{surface.name.to_s} "}
|
81
|
+
all_adiabatic_surfaces.each { |surface| name = "#{names} , #{surface.name.to_s} " }
|
82
82
|
BTAP::runner_register("Warning", "The following adiabatic surfaces have been assigned the construction #{wall_construction.name} : #{name}", runner)
|
83
83
|
end
|
84
84
|
else
|
@@ -92,8 +92,8 @@ module BTAP
|
|
92
92
|
#@author phylroy.lopez@nrcan.gc.ca
|
93
93
|
#@param model [OpenStudio::model::Model] A model object
|
94
94
|
def self.remove_all_thermal_mass_definitions(model)
|
95
|
-
model.getInternalMassDefinitions.sort.each {|item| item.remove}
|
96
|
-
model.getInternalMasss.sort.each {|item| item.remove}
|
95
|
+
model.getInternalMassDefinitions.sort.each { |item| item.remove }
|
96
|
+
model.getInternalMasss.sort.each { |item| item.remove }
|
97
97
|
end
|
98
98
|
|
99
99
|
#This method removes all envelope information from model.
|
@@ -112,7 +112,7 @@ module BTAP
|
|
112
112
|
|
113
113
|
|
114
114
|
def self.set_all_surfaces_to_default_construction(model)
|
115
|
-
model.getPlanarSurfaces.sort.each {|item| item.resetConstruction}
|
115
|
+
model.getPlanarSurfaces.sort.each { |item| item.resetConstruction }
|
116
116
|
end
|
117
117
|
|
118
118
|
|
@@ -134,7 +134,7 @@ module BTAP
|
|
134
134
|
conductance = material.to_Shade.get.thermalConductance unless material.to_Shade.empty?
|
135
135
|
conductance = material.to_Screen.get.thermalConductance unless material.to_Screen.empty?
|
136
136
|
conductance = material.to_MasslessOpaqueMaterial.get.thermalConductance unless material.to_MasslessOpaqueMaterial.empty?
|
137
|
-
conductance = 1.0/material.to_AirGap.get.thermalResistance unless material.to_AirGap.empty?
|
137
|
+
conductance = 1.0 / material.to_AirGap.get.thermalResistance unless material.to_AirGap.empty?
|
138
138
|
conductance = material.to_Gas.get.getThermalConductivity(temperature_k) unless material.to_Gas.empty?
|
139
139
|
conductance = material.to_GasMixture.get.getThermalConductance(temperature_k) unless material.to_GasMixture.empty?
|
140
140
|
conductance = material.to_RoofVegetation.get.thermalConductance unless material.to_RoofVegetation.empty?
|
@@ -194,15 +194,15 @@ module BTAP
|
|
194
194
|
# @param visible_absorptance [Float] range of 0 to 1.0
|
195
195
|
# @return [OpenStudio::Model::StandardOpaqueMaterial] material {http://openstudio.nrel.gov/sites/openstudio.nrel.gov/files/nv_data/cpp_documentation_it/model/html/classopenstudio_1_1model_1_1_standard_opaque_material.html}
|
196
196
|
def self.create_opaque_material(model,
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
197
|
+
name = "opaque material",
|
198
|
+
thickness = 0.1,
|
199
|
+
conductivity = 0.1,
|
200
|
+
density = 0.1,
|
201
|
+
specific_heat = 100,
|
202
|
+
roughness = "Smooth",
|
203
|
+
thermal_absorptance = 0.9,
|
204
|
+
solar_absorptance = 0.7,
|
205
|
+
visible_absorptance = 0.7)
|
206
206
|
# make sure the roughness value is acceptable.
|
207
207
|
raise("Roughness Value \"#{roughness}\" is not a part of accepted values such as: #{OpenStudio::Model::StandardOpaqueMaterial::roughnessValues.join(",")}") unless OpenStudio::Model::StandardOpaqueMaterial::roughnessValues.include?(roughness)
|
208
208
|
# I was thinking of adding a suffix to the name to make it more descriptive, but this can be confusing. Keeping it here if I need it later.
|
@@ -342,21 +342,21 @@ module BTAP
|
|
342
342
|
# @return [OpenStudio::Model::StandardGlazing] stdglazing
|
343
343
|
def self.create_standard_glazing(
|
344
344
|
model,
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
345
|
+
name = "Standard Glazing Test",
|
346
|
+
thickness = 0.003,
|
347
|
+
conductivity = 0.9,
|
348
|
+
solarTransmittanceatNormalIncidence = 0.84,
|
349
|
+
frontSideSolarReflectanceatNormalIncidence = 0.075,
|
350
|
+
backSideSolarReflectanceatNormalIncidence = 0.075,
|
351
|
+
visibleTransmittance = 0.9,
|
352
|
+
frontSideVisibleReflectanceatNormalIncidence = 0.081,
|
353
|
+
backSideVisibleReflectanceatNormalIncidence = 0.081,
|
354
|
+
infraredTransmittanceatNormalIncidence = 0.0,
|
355
|
+
frontSideInfraredHemisphericalEmissivity = 0.84,
|
356
|
+
backSideInfraredHemisphericalEmissivity = 0.84,
|
357
|
+
opticalDataType = "SpectralAverage",
|
358
|
+
dirt_correction_factor = 1.0,
|
359
|
+
is_solar_diffusing = false
|
360
360
|
)
|
361
361
|
raise("Roughness Value \"#{roughness}\" is not a part of accepted values: #{OpenStudio::Model::StandardGlazing::opticalDataTypeValues().join(",")}") unless OpenStudio::Model::StandardGlazing::opticalDataTypeValues().include?(opticalDataType)
|
362
362
|
stdglazing = OpenStudio::Model::StandardGlazing.new(model)
|
@@ -662,8 +662,8 @@ module BTAP
|
|
662
662
|
layer_comp << {
|
663
663
|
thickness_m: mat_layer.thickness.to_f,
|
664
664
|
conductivity_SI: mat_layer.conductivity.to_f,
|
665
|
-
conductance_SI: (mat_layer.conductivity.to_f/mat_layer.thickness.to_f),
|
666
|
-
resistance_SI: (mat_layer.thickness.to_f/mat_layer.conductivity.to_f),
|
665
|
+
conductance_SI: (mat_layer.conductivity.to_f / mat_layer.thickness.to_f),
|
666
|
+
resistance_SI: (mat_layer.thickness.to_f / mat_layer.conductivity.to_f),
|
667
667
|
construction_index: layer_index,
|
668
668
|
layer_object: mat_layer
|
669
669
|
}
|
@@ -671,8 +671,8 @@ module BTAP
|
|
671
671
|
mat_layer = layer.to_MasslessOpaqueMaterial.get
|
672
672
|
layer_comp << {
|
673
673
|
thickness_m: 0,
|
674
|
-
conductivity_SI: 1.0/mat_layer.thermalResistance.to_f,
|
675
|
-
conductance_SI: 1.0/mat_layer.thermalResistance.to_f,
|
674
|
+
conductivity_SI: 1.0 / mat_layer.thermalResistance.to_f,
|
675
|
+
conductance_SI: 1.0 / mat_layer.thermalResistance.to_f,
|
676
676
|
resistance_SI: mat_layer.thermalResistance.to_f,
|
677
677
|
construction_index: layer_index,
|
678
678
|
layer_object: mat_layer
|
@@ -681,8 +681,8 @@ module BTAP
|
|
681
681
|
mat_layer = layer.to_AirGap.get
|
682
682
|
layer_comp << {
|
683
683
|
thickness_m: 0,
|
684
|
-
conductivity_SI: 1.0/mat_layer.thermalResistance.to_f,
|
685
|
-
conductance_SI: 1.0/mat_layer.thermalResistance.to_f,
|
684
|
+
conductivity_SI: 1.0 / mat_layer.thermalResistance.to_f,
|
685
|
+
conductance_SI: 1.0 / mat_layer.thermalResistance.to_f,
|
686
686
|
resistance_SI: mat_layer.thermalResistance.to_f,
|
687
687
|
construction_index: layer_index,
|
688
688
|
layer_object: mat_layer
|
@@ -691,7 +691,7 @@ module BTAP
|
|
691
691
|
end
|
692
692
|
# Sort the above layers by the conductivity of the layers. The lowest conductivity layers first followed by
|
693
693
|
# layers with progressively higher conductivities.
|
694
|
-
sorted_layers = layer_comp.sort{ |a, b| b[:conductivity_SI] <=> a[:conductivity_SI]}
|
694
|
+
sorted_layers = layer_comp.sort { |a, b| b[:conductivity_SI] <=> a[:conductivity_SI] }
|
695
695
|
index = 0
|
696
696
|
total_conductance = construction.thermalConductance.to_f
|
697
697
|
# The following loop steps through the array of layers, sorted form highest conductivity to lowest. It
|
@@ -713,11 +713,11 @@ module BTAP
|
|
713
713
|
const_index = sorted_layers[index][:construction_index]
|
714
714
|
# Check if modifying the resistance of the currently layer will be enough to reach our total construction
|
715
715
|
# conductance goal. If it will, modify the layer. If it will not, delete the layer.
|
716
|
-
if sorted_layers[index][:resistance_SI] > ((1.0/total_conductance) - (1.0/req_conductance))
|
716
|
+
if sorted_layers[index][:resistance_SI] > ((1.0 / total_conductance) - (1.0 / req_conductance))
|
717
717
|
# If the current layer is a NoMass or AirGap material its thickness is zero so we set the resistance.
|
718
718
|
if sorted_layers[index][:thickness_m] == 0
|
719
719
|
# Determine the resistance we want to set the layer to.
|
720
|
-
res_mod = sorted_layers[index][:resistance_SI] - ((1.0/total_conductance) - (1.0/req_conductance))
|
720
|
+
res_mod = sorted_layers[index][:resistance_SI] - ((1.0 / total_conductance) - (1.0 / req_conductance))
|
721
721
|
# Find out if the layer is an AirGap or NoMass and set the resistance for the layer with the right
|
722
722
|
# command systax.
|
723
723
|
mat_type = construction.layers[const_index].iddObjectType.valueName.to_s
|
@@ -731,7 +731,7 @@ module BTAP
|
|
731
731
|
# The the current layer is a regular opaque material it has a thickness so we set that to reach the
|
732
732
|
# desired resistance for that layer.
|
733
733
|
# Determine the thickness we want to set the layer.
|
734
|
-
thick_mod = (sorted_layers[index][:resistance_SI] - ((1.0/total_conductance) - (1.0/req_conductance)))*(sorted_layers[index][:conductivity_SI])
|
734
|
+
thick_mod = (sorted_layers[index][:resistance_SI] - ((1.0 / total_conductance) - (1.0 / req_conductance))) * (sorted_layers[index][:conductivity_SI])
|
735
735
|
# Set the thickness of the layer.
|
736
736
|
construction.layers[const_index].to_StandardOpaqueMaterial.get.setThickness(thick_mod)
|
737
737
|
end
|
@@ -790,10 +790,10 @@ module BTAP
|
|
790
790
|
def self.should_modify_layer(mat_resistance:, total_conductance:, req_conductance:)
|
791
791
|
# Determine if the amount of resistance you can modify in this layer is greater than the amount of resistance
|
792
792
|
# you have to change.
|
793
|
-
if mat_resistance > ((1.0/total_conductance) - (1.0/req_conductance))
|
793
|
+
if mat_resistance > ((1.0 / total_conductance) - (1.0 / req_conductance))
|
794
794
|
# If yes, determine what the resistance for this layer should be to meet the required resistance of the
|
795
795
|
# entire assembly. Then return the new resistance value.
|
796
|
-
target_res = mat_resistance - ((1.0/total_conductance) - (1.0/req_conductance))
|
796
|
+
target_res = mat_resistance - ((1.0 / total_conductance) - (1.0 / req_conductance))
|
797
797
|
return target_res
|
798
798
|
else
|
799
799
|
# If no, then return an unambiguous no.
|
@@ -921,16 +921,16 @@ module BTAP
|
|
921
921
|
#@return [String] create_construction
|
922
922
|
def self.customize_fenestration_construction(
|
923
923
|
model,
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
924
|
+
construction,
|
925
|
+
conductance = nil,
|
926
|
+
solarTransmittanceatNormalIncidence = nil,
|
927
|
+
visibleTransmittance = nil,
|
928
|
+
at_temperature_c = 0.0)
|
929
929
|
construction = OpenStudio::Model::getConstructionByName(model, construction.name.to_s).get
|
930
930
|
raise ("This is not a fenestration!") unless construction.isFenestration
|
931
931
|
#get equivilant values for tsol, tvis, and conductances.
|
932
932
|
#TSol in this case is SHGC
|
933
|
-
solarTransmittanceatNormalIncidence = self.get_shgc(model, construction) if solarTransmittanceatNormalIncidence
|
933
|
+
solarTransmittanceatNormalIncidence = self.get_shgc(model, construction) if solarTransmittanceatNormalIncidence.nil?
|
934
934
|
visibleTransmittance = self.get_tvis(model, construction) if visibleTransmittance == nil
|
935
935
|
conductance = self.get_conductance(construction) if conductance == nil
|
936
936
|
frontSideSolarReflectanceatNormalIncidence = 1.0 - solarTransmittanceatNormalIncidence
|
@@ -1000,14 +1000,6 @@ module BTAP
|
|
1000
1000
|
return self.create_construction(construction.model, cons_name, new_materials_array)
|
1001
1001
|
end
|
1002
1002
|
|
1003
|
-
def self.create_default_construction(model, rsi)
|
1004
|
-
|
1005
|
-
end
|
1006
|
-
|
1007
|
-
def self.create_default_fenestration(model, rsi)
|
1008
|
-
|
1009
|
-
end
|
1010
|
-
|
1011
1003
|
|
1012
1004
|
end #module Constructions
|
1013
1005
|
|
@@ -1036,26 +1028,6 @@ module BTAP
|
|
1036
1028
|
assert(!(construction_set.to_DefaultSurfaceConstructions.empty?))
|
1037
1029
|
end
|
1038
1030
|
|
1039
|
-
#This method customizes default surface constructions
|
1040
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
1041
|
-
def test_customize_default_surface_constructions_rsi()
|
1042
|
-
model = OpenStudio::Model::Model.new()
|
1043
|
-
#Create layers from defaults
|
1044
|
-
insulation = BTAP::Resources::Envelope::Materials::Opaque::create_opaque_material(model)
|
1045
|
-
opaque = BTAP::Resources::Envelope::Materials::Opaque::create_opaque_material(model)
|
1046
|
-
air_gap = BTAP::Resources::Envelope::Materials::Opaque::create_air_gap(model)
|
1047
|
-
massless = BTAP::Resources::Envelope::Materials::Opaque::create_massless_opaque_material(model)
|
1048
|
-
construction = BTAP::Resources::Envelope::Constructions::create_construction(model, "test construction", [opaque, air_gap, insulation, massless, opaque], insulation)
|
1049
|
-
walls_cons = floor_cons = roof_cons = construction
|
1050
|
-
construction_set = BTAP::Resources::Envelope::ConstructionSets::create_default_surface_constructions(model, "test construction set", walls_cons, floor_cons, roof_cons)
|
1051
|
-
#Check that the construction was created
|
1052
|
-
assert(!(construction_set.to_DefaultSurfaceConstructions.empty?))
|
1053
|
-
new_set = BTAP::Resources::Envelope::ConstructionSets::customize_default_surface_constructions_rsi(model, "changed_rsi", construction_set, 1.0 / 2.45, 1.0 / 2.55, 1.0 / 2.65)
|
1054
|
-
assert_in_delta(1.0 / 2.45, BTAP::Resources::Envelope::Constructions::get_conductance(new_set.wallConstruction.get).to_f, 0.00001)
|
1055
|
-
assert_in_delta(1.0 / 2.55, BTAP::Resources::Envelope::Constructions::get_conductance(new_set.floorConstruction.get).to_f, 0.00001)
|
1056
|
-
assert_in_delta(1.0 / 2.65, BTAP::Resources::Envelope::Constructions::get_conductance(new_set.roofCeilingConstruction.get).to_f, 0.00001)
|
1057
|
-
end
|
1058
|
-
|
1059
1031
|
|
1060
1032
|
#This method creates default subsurface constructions
|
1061
1033
|
#@author phylroy.lopez@nrcan.gc.ca
|
@@ -1153,7 +1125,7 @@ module BTAP
|
|
1153
1125
|
return false
|
1154
1126
|
end
|
1155
1127
|
#sets all surfaces to use default constructions except adiabatic, where it does a hard assignment of the interior wall construction type.
|
1156
|
-
model.getPlanarSurfaces.sort.each {|item| item.resetConstruction}
|
1128
|
+
model.getPlanarSurfaces.sort.each { |item| item.resetConstruction }
|
1157
1129
|
#if the default construction set is defined..try to assign the interior wall to the adiabatic surfaces
|
1158
1130
|
BTAP::Resources::Envelope::assign_interior_surface_construction_to_adiabatic_surfaces(model, runner)
|
1159
1131
|
BTAP::runner_register("Info", "set_construction_set_by_file(#{construction_library_file}, #{construction_set_name}) Completed Sucessfully.")
|
@@ -1161,92 +1133,117 @@ module BTAP
|
|
1161
1133
|
end
|
1162
1134
|
|
1163
1135
|
|
1164
|
-
#This method customizes default surface construction and sets
|
1136
|
+
#This method customizes default surface construction and sets conductance
|
1165
1137
|
#@author phylroy.lopez@nrcan.gc.ca
|
1166
1138
|
#@param model [OpenStudio::Model::Model]
|
1167
1139
|
#@param name [String]
|
1168
1140
|
#@param default_surface_construction_set <String>
|
1169
|
-
#@param
|
1170
|
-
#@param
|
1171
|
-
#@param
|
1172
|
-
#@param
|
1173
|
-
#@param
|
1174
|
-
#@param
|
1175
|
-
#@param
|
1141
|
+
#@param ext_wall_cond [Float] = nil
|
1142
|
+
#@param ext_floor_cond [Float] = nil
|
1143
|
+
#@param ext_roof_cond [Float] = nil
|
1144
|
+
#@param ground_wall_cond [Float] = nil
|
1145
|
+
#@param ground_floor_cond [Float] = nil
|
1146
|
+
#@param ground_roof_cond [Float] = nil
|
1147
|
+
#@param fixed_window_cond [Float] = nil
|
1176
1148
|
#@param fixed_wind_solar_trans [Float] = nil
|
1177
1149
|
#@param fixed_wind_vis_trans [Float] = nil
|
1178
|
-
#@param
|
1150
|
+
#@param operable_window_cond [Float] = nil
|
1179
1151
|
#@param operable_wind_solar_trans [Float] = nil
|
1180
1152
|
#@param operable_wind_vis_trans [Float] = nil
|
1181
|
-
#@param
|
1182
|
-
#@param
|
1153
|
+
#@param door_construction_cond [Float] = nil
|
1154
|
+
#@param glass_door_cond [Float] = nil
|
1183
1155
|
#@param glass_door_solar_trans [Float] = nil
|
1184
1156
|
#@param glass_door_vis_trans [Float] = nil
|
1185
|
-
#@param
|
1186
|
-
#@param
|
1157
|
+
#@param overhead_door_cond [Float] = nil
|
1158
|
+
#@param skylight_cond [Float] = nil
|
1187
1159
|
#@param skylight_solar_trans [Float] = nil
|
1188
1160
|
#@param skylight_vis_trans [Float] = nil,
|
1189
|
-
#@param
|
1161
|
+
#@param tubular_daylight_dome_cond [Float] = nil
|
1190
1162
|
#@param tubular_daylight_dome_solar_trans [Float] = nil
|
1191
1163
|
#@param tubular_daylight_dome_vis_trans [Float] = nil,
|
1192
|
-
#@param
|
1164
|
+
#@param tubular_daylight_diffuser_cond [Float] = nil
|
1193
1165
|
#@param tubular_daylight_diffuser_solar_trans [Float] = nil
|
1194
1166
|
#@param tubular_daylight_diffuser_vis_trans [Float] = nil
|
1195
|
-
def self.
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1167
|
+
def self.customize_default_surface_construction_set!(model:,
|
1168
|
+
name:,
|
1169
|
+
default_surface_construction_set:,
|
1170
|
+
# ext surfaces
|
1171
|
+
ext_wall_cond: nil,
|
1172
|
+
ext_floor_cond: nil,
|
1173
|
+
ext_roof_cond: nil,
|
1174
|
+
# ground surfaces
|
1175
|
+
ground_wall_cond: nil,
|
1176
|
+
ground_floor_cond: nil,
|
1177
|
+
ground_roof_cond: nil,
|
1178
|
+
# fixed Windows
|
1179
|
+
fixed_window_cond: nil,
|
1180
|
+
fixed_wind_solar_trans: nil,
|
1181
|
+
fixed_wind_vis_trans: nil,
|
1182
|
+
# operable windows
|
1183
|
+
operable_wind_solar_trans: nil,
|
1184
|
+
operable_window_cond: nil,
|
1185
|
+
operable_wind_vis_trans: nil,
|
1186
|
+
# glass doors
|
1187
|
+
glass_door_cond: nil,
|
1188
|
+
glass_door_solar_trans: nil,
|
1189
|
+
glass_door_vis_trans: nil,
|
1190
|
+
# opaque doors
|
1191
|
+
door_construction_cond: nil,
|
1192
|
+
overhead_door_cond: nil,
|
1193
|
+
# skylights
|
1194
|
+
skylight_cond: nil,
|
1195
|
+
skylight_solar_trans: nil,
|
1196
|
+
skylight_vis_trans: nil,
|
1197
|
+
# tubular daylight dome
|
1198
|
+
tubular_daylight_dome_cond: nil,
|
1199
|
+
tubular_daylight_dome_solar_trans: nil,
|
1200
|
+
tubular_daylight_dome_vis_trans: nil,
|
1201
|
+
# tubular daylight diffuser
|
1202
|
+
tubular_daylight_diffuser_cond: nil,
|
1203
|
+
tubular_daylight_diffuser_solar_trans: nil,
|
1204
|
+
tubular_daylight_diffuser_vis_trans: nil
|
1223
1205
|
)
|
1206
|
+
|
1224
1207
|
#Change name if required.
|
1225
1208
|
default_surface_construction_set.setName(name) unless name.nil?
|
1226
1209
|
ext_surface_set = default_surface_construction_set.defaultExteriorSurfaceConstructions.get
|
1227
|
-
new_ext_surface_set = self.
|
1210
|
+
new_ext_surface_set = self.customize_default_surface_constructions_conductance(model, name, ext_surface_set, ext_wall_cond, ext_floor_cond, ext_roof_cond)
|
1228
1211
|
raise ("Could not customized exterior constructionset") unless default_surface_construction_set.setDefaultExteriorSurfaceConstructions(new_ext_surface_set)
|
1229
1212
|
|
1230
1213
|
ground_surface_set = default_surface_construction_set.defaultGroundContactSurfaceConstructions.get
|
1231
1214
|
|
1232
|
-
new_ground_surface_set = self.
|
1215
|
+
new_ground_surface_set = self.customize_default_surface_constructions_conductance(model, name, ground_surface_set, ground_wall_cond, ground_floor_cond, ground_roof_cond)
|
1233
1216
|
raise ("Could not customized ground constructionset") unless default_surface_construction_set.setDefaultGroundContactSurfaceConstructions(new_ground_surface_set)
|
1234
1217
|
|
1235
1218
|
ext_subsurface_set = default_surface_construction_set.defaultExteriorSubSurfaceConstructions.get
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1219
|
+
|
1220
|
+
new_ext_subsurface_set = self.customize_default_sub_surface_constructions_conductance(
|
1221
|
+
model: model,
|
1222
|
+
name: name,
|
1223
|
+
subsurface_set: ext_subsurface_set,
|
1224
|
+
fixed_window_conductance: fixed_window_cond,
|
1225
|
+
fixed_wind_vis_trans: fixed_wind_vis_trans,
|
1226
|
+
fixed_wind_solar_trans: fixed_wind_solar_trans,
|
1227
|
+
operable_window_conductance: operable_window_cond,
|
1228
|
+
operable_wind_solar_trans: operable_wind_solar_trans,
|
1229
|
+
operable_wind_vis_trans: operable_wind_vis_trans,
|
1230
|
+
glass_door_conductance: glass_door_cond,
|
1231
|
+
glass_door_solar_trans: glass_door_solar_trans,
|
1232
|
+
glass_door_vis_trans: glass_door_vis_trans,
|
1233
|
+
skylight_conductance: skylight_cond,
|
1234
|
+
skylight_solar_trans: skylight_solar_trans,
|
1235
|
+
skylight_vis_trans: skylight_vis_trans,
|
1236
|
+
tubular_daylight_dome_conductance: tubular_daylight_dome_cond,
|
1237
|
+
tubular_daylight_dome_solar_trans: tubular_daylight_dome_solar_trans,
|
1238
|
+
tubular_daylight_dome_vis_trans: tubular_daylight_dome_vis_trans,
|
1239
|
+
tubular_daylight_diffuser_conductance: tubular_daylight_diffuser_cond,
|
1240
|
+
tubular_daylight_diffuser_solar_trans: tubular_daylight_diffuser_solar_trans,
|
1241
|
+
tubular_daylight_diffuser_vis_trans: tubular_daylight_diffuser_vis_trans,
|
1242
|
+
door_construction_conductance: door_construction_cond,
|
1243
|
+
overhead_door_conductance: overhead_door_cond,
|
1248
1244
|
)
|
1249
1245
|
raise ("Could not customize subsurface constructionset") unless default_surface_construction_set.setDefaultExteriorSubSurfaceConstructions(new_ext_subsurface_set)
|
1246
|
+
|
1250
1247
|
end
|
1251
1248
|
|
1252
1249
|
|
@@ -1270,21 +1267,21 @@ module BTAP
|
|
1270
1267
|
#@param tubular_daylight_diffuser_cost [Float] = nil
|
1271
1268
|
#@param total_building_construction_set_cost [Float] = nil
|
1272
1269
|
def self.customize_default_surface_construction_set_costs(default_surface_construction_set,
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1270
|
+
ext_wall_cost = nil,
|
1271
|
+
ext_floor_cost = nil,
|
1272
|
+
ext_roof_cost = nil,
|
1273
|
+
ground_wall_cost = nil,
|
1274
|
+
ground_floor_cost = nil,
|
1275
|
+
ground_roof_cost = nil,
|
1276
|
+
fixed_window_cost = nil,
|
1277
|
+
operable_window_cost = nil,
|
1278
|
+
door_construction_cost = nil,
|
1279
|
+
glass_door_cost = nil,
|
1280
|
+
overhead_door_cost = nil,
|
1281
|
+
skylight_cost = nil,
|
1282
|
+
tubular_daylight_dome_cost = nil,
|
1283
|
+
tubular_daylight_diffuser_cost = nil,
|
1284
|
+
total_building_construction_set_cost = nil
|
1288
1285
|
)
|
1289
1286
|
|
1290
1287
|
constructions_and_cost = [
|
@@ -1321,70 +1318,6 @@ module BTAP
|
|
1321
1318
|
BTAP::Resources::Economics::object_cost(building, "Builing Contruction Set Whole Building Capital Cost", total_building_construction_set_cost, "CostPerEach")
|
1322
1319
|
end
|
1323
1320
|
|
1324
|
-
#This will customize default surface construction.
|
1325
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
1326
|
-
#@param model [OpenStudio::Model::Model]
|
1327
|
-
#@param name [String]
|
1328
|
-
#@param subsurface_set [Float] = nil
|
1329
|
-
#@param fixed_window_rsi [Float] = nil
|
1330
|
-
#@param fixed_wind_solar_trans [Float] = nil
|
1331
|
-
#@param fixed_wind_vis_trans [Float] = nil,
|
1332
|
-
#@param operable_window_rsi [Float] = nil
|
1333
|
-
#@param operable_wind_solar_trans [Float] = nil
|
1334
|
-
#@param operable_wind_vis_trans [Float] = nil
|
1335
|
-
#@param door_construction_rsi [Float] = nil
|
1336
|
-
#@param glass_door_rsi [Float] = nil
|
1337
|
-
#@param glass_door_solar_trans [Float] = nil
|
1338
|
-
#@param glass_door_vis_trans [Float] = nil
|
1339
|
-
#@param overhead_door_rsi [Float] = nil
|
1340
|
-
#@param skylight_rsi [Float] = nil
|
1341
|
-
#@param skylight_solar_trans [Float] = nil
|
1342
|
-
#@param skylight_vis_trans [Float] = nil,
|
1343
|
-
#@param tubular_daylight_dome_rsi [Float] = nil
|
1344
|
-
#@param tubular_daylight_dome_solar_trans [Float] = nil
|
1345
|
-
#@param tubular_daylight_dome_vis_trans [Float] = nil
|
1346
|
-
#@param tubular_daylight_diffuser_rsi [Float] = nil
|
1347
|
-
#@param tubular_daylight_diffuser_solar_trans [Float] = nil
|
1348
|
-
#@param tubular_daylight_diffuser_vis_trans [Float] = nil
|
1349
|
-
def self.customize_default_sub_surface_constructions_rsi(
|
1350
|
-
model,
|
1351
|
-
name,
|
1352
|
-
subsurface_set,
|
1353
|
-
fixed_window_rsi = nil, fixed_wind_solar_trans = nil, fixed_wind_vis_trans = nil,
|
1354
|
-
operable_window_rsi = nil, operable_wind_solar_trans = nil, operable_wind_vis_trans = nil,
|
1355
|
-
door_construction_rsi = nil,
|
1356
|
-
glass_door_rsi = nil, glass_door_solar_trans = nil, glass_door_vis_trans = nil,
|
1357
|
-
overhead_door_rsi = nil,
|
1358
|
-
skylight_rsi = nil, skylight_solar_trans = nil, skylight_vis_trans = nil,
|
1359
|
-
tubular_daylight_dome_rsi = nil, tubular_daylight_dome_solar_trans = nil, tubular_daylight_dome_vis_trans = nil,
|
1360
|
-
tubular_daylight_diffuser_rsi = nil, tubular_daylight_diffuser_solar_trans = nil, tubular_daylight_diffuser_vis_trans = nil
|
1361
|
-
)
|
1362
|
-
|
1363
|
-
fixed_window_rsi.nil? ? fixed_window_conductance = nil : fixed_window_conductance = 1.0 / fixed_window_rsi
|
1364
|
-
operable_window_rsi.nil? ? operable_window_conductance = nil : operable_window_conductance = 1.0 / operable_window_rsi
|
1365
|
-
door_construction_rsi.nil? ? door_construction_conductance = nil : door_construction_conductance = 1.0 / door_construction_rsi
|
1366
|
-
glass_door_rsi.nil? ? glass_door_conductance = nil : glass_door_conductance = 1.0 / glass_door_rsi
|
1367
|
-
overhead_door_rsi.nil? ? overhead_door_conductance = nil : overhead_door_conductance = 1.0 / overhead_door_rsi
|
1368
|
-
skylight_rsi.nil? ? skylight_conductance = nil : skylight_conductance = 1.0 / skylight_rsi
|
1369
|
-
tubular_daylight_dome_rsi.nil? ? tubular_daylight_dome_conductance = nil : tubular_daylight_dome_conductance = 1.0 / tubular_daylight_dome_rsi
|
1370
|
-
tubular_daylight_diffuser_rsi.nil? ? tubular_daylight_diffuser_conductance = nil : tubular_daylight_diffuser_conductance = 1.0 / tubular_daylight_diffuser_rsi
|
1371
|
-
|
1372
|
-
self.customize_default_sub_surface_constructions_conductance(
|
1373
|
-
model,
|
1374
|
-
name,
|
1375
|
-
subsurface_set,
|
1376
|
-
fixed_window_conductance, fixed_wind_solar_trans, fixed_wind_vis_trans,
|
1377
|
-
operable_window_conductance, operable_wind_solar_trans, operable_wind_vis_trans,
|
1378
|
-
door_construction_conductance,
|
1379
|
-
glass_door_conductance, glass_door_solar_trans, glass_door_vis_trans,
|
1380
|
-
overhead_door_conductance,
|
1381
|
-
skylight_conductance, skylight_solar_trans, skylight_vis_trans,
|
1382
|
-
tubular_daylight_dome_conductance, tubular_daylight_dome_solar_trans, tubular_daylight_dome_vis_trans,
|
1383
|
-
tubular_daylight_diffuser_conductance, tubular_daylight_diffuser_solar_trans, tubular_daylight_diffuser_vis_trans
|
1384
|
-
)
|
1385
|
-
|
1386
|
-
end
|
1387
|
-
|
1388
1321
|
|
1389
1322
|
#This will customize default subsurface construction conductances.
|
1390
1323
|
#@author phylroy.lopez@nrcan.gc.ca
|
@@ -1413,17 +1346,28 @@ module BTAP
|
|
1413
1346
|
#@param tubular_daylight_diffuser_vis_trans [Float] = nil
|
1414
1347
|
#@return [Object] set
|
1415
1348
|
def self.customize_default_sub_surface_constructions_conductance(
|
1416
|
-
model
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1349
|
+
model:,
|
1350
|
+
name:,
|
1351
|
+
subsurface_set:,
|
1352
|
+
fixed_window_conductance: nil,
|
1353
|
+
fixed_wind_solar_trans: nil,
|
1354
|
+
fixed_wind_vis_trans: nil,
|
1355
|
+
operable_window_conductance: nil,
|
1356
|
+
operable_wind_solar_trans: nil,
|
1357
|
+
operable_wind_vis_trans: nil,
|
1358
|
+
door_construction_conductance: nil,
|
1359
|
+
glass_door_conductance: nil,
|
1360
|
+
glass_door_solar_trans: nil,
|
1361
|
+
glass_door_vis_trans: nil,
|
1362
|
+
overhead_door_conductance: nil,
|
1363
|
+
skylight_conductance: nil,
|
1364
|
+
skylight_solar_trans: nil,
|
1365
|
+
skylight_vis_trans: nil,
|
1366
|
+
tubular_daylight_dome_conductance: nil,
|
1367
|
+
tubular_daylight_dome_solar_trans: nil,
|
1368
|
+
tubular_daylight_dome_vis_trans: nil,
|
1369
|
+
tubular_daylight_diffuser_conductance: nil,
|
1370
|
+
tubular_daylight_diffuser_solar_trans: nil, tubular_daylight_diffuser_vis_trans: nil
|
1427
1371
|
)
|
1428
1372
|
set = OpenStudio::Model::DefaultSubSurfaceConstructions.new(model)
|
1429
1373
|
set.setName(name)
|
@@ -1438,22 +1382,6 @@ module BTAP
|
|
1438
1382
|
return set
|
1439
1383
|
end
|
1440
1384
|
|
1441
|
-
#This will customize default surface construction rsi.
|
1442
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
1443
|
-
#@param model [OpenStudio::Model::Model]
|
1444
|
-
#@param name [String] = nil
|
1445
|
-
#@param default_surface_constructions [Float] = nil
|
1446
|
-
#@param wall_rsi [Float] = nil
|
1447
|
-
#@param floor_rsi [Float] = nil
|
1448
|
-
#@param roof_rsi [Float] = nil
|
1449
|
-
def self.customize_default_surface_constructions_rsi(model, name, default_surface_constructions, wall_rsi = nil, floor_rsi = nil, roof_rsi = nil)
|
1450
|
-
|
1451
|
-
wall_rsi.nil? ? wall_conductance = nil : wall_conductance = 1.0 / wall_rsi
|
1452
|
-
floor_rsi.nil? ? floor_conductance = nil : floor_conductance = 1.0 / floor_rsi
|
1453
|
-
roof_rsi.nil? ? roof_conductance = nil : roof_conductance = 1.0 / roof_rsi
|
1454
|
-
|
1455
|
-
self.customize_default_surface_constructions_conductance(model, name, default_surface_constructions, wall_conductance, floor_conductance, roof_conductance)
|
1456
|
-
end
|
1457
1385
|
|
1458
1386
|
#This will customize default surface construction conductance.
|
1459
1387
|
#@author phylroy.lopez@nrcan.gc.ca
|
@@ -1509,14 +1437,14 @@ module BTAP
|
|
1509
1437
|
#@return [Object] set
|
1510
1438
|
def self.create_subsurface_construction_set(
|
1511
1439
|
model,
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1440
|
+
fixedWindowConstruction,
|
1441
|
+
operableWindowConstruction,
|
1442
|
+
setDoorConstruction,
|
1443
|
+
setGlassDoorConstruction,
|
1444
|
+
overheadDoorConstruction,
|
1445
|
+
skylightConstruction,
|
1446
|
+
tubularDaylightDomeConstruction,
|
1447
|
+
tubularDaylightDiffuserConstruction)
|
1520
1448
|
fixedWindowConstruction = BTAP::Common::validate_array(model, fixedWindowConstruction, "Construction").first
|
1521
1449
|
operableWindowConstruction = BTAP::Common::validate_array(model, operableWindowConstruction, "Construction").first
|
1522
1450
|
setDoorConstruction = BTAP::Common::validate_array(model, setDoorConstruction, "Construction").first
|
@@ -1575,12 +1503,12 @@ module BTAP
|
|
1575
1503
|
#@return [Object] set
|
1576
1504
|
def self.create_default_construction_set(
|
1577
1505
|
model,
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1506
|
+
name,
|
1507
|
+
exterior_construction_set,
|
1508
|
+
interior_construction_set,
|
1509
|
+
ground_construction_set,
|
1510
|
+
subsurface_exterior_construction_set,
|
1511
|
+
subsurface_interior_construction_set)
|
1584
1512
|
exterior_construction_set = BTAP::Common::validate_array(model, exterior_construction_set, "DefaultSurfaceConstructions").first
|
1585
1513
|
interior_construction_set = BTAP::Common::validate_array(model, interior_construction_set, "DefaultSurfaceConstructions").first
|
1586
1514
|
ground_construction_set = BTAP::Common::validate_array(model, ground_construction_set, "DefaultSurfaceConstructions").first
|