lib/openstudio-standards/qaqc/envelope.rb in openstudio-standards-0.6.0.rc2 vs lib/openstudio-standards/qaqc/envelope.rb in openstudio-standards-0.6.3

- old
+ new

@@ -156,19 +156,19 @@ intended_surface_type = 'ExteriorFloor' end end film_coefficients_r_value = OpenstudioStandards::Constructions.film_coefficients_r_value(intended_surface_type, includes_int_film = true, includes_ext_film = true) thermal_conductance = surface_detail[:construction].thermalConductance.get - r_value_with_film = 1 / thermal_conductance + film_coefficients_r_value + r_value_with_film = (1 / thermal_conductance) + film_coefficients_r_value source_units = 'm^2*K/W' target_units = 'ft^2*h*R/Btu' r_value_ip = OpenStudio.convert(r_value_with_film, source_units, target_units).get solar_reflectance = surface_detail[:construction].to_LayeredConstruction.get.layers[0].to_OpaqueMaterial.get.solarReflectance.get # @todo check with exterior air wall # stop if didn't find values (0 or infinity) - next if target_r_value_ip[surface_detail[:surface_type]] == 0.0 + next if target_r_value_ip[surface_detail[:surface_type]] < 0.01 next if target_r_value_ip[surface_detail[:surface_type]] == Float::INFINITY # check r avlues if r_value_ip < target_r_value_ip[surface_detail[:surface_type]] * (1.0 - min_pass_pct) check_elems << OpenStudio::Attribute.new('flag', "R value of #{r_value_ip.round(2)} (#{target_units}) for #{surface_detail[:construction].name} in #{space_type.name} is more than #{min_pass_pct * 100} % below the expected value of #{target_r_value_ip[surface_detail[:surface_type]].round(2)} (#{target_units}) for #{display_standard}.") @@ -198,11 +198,11 @@ u_factor_si = OpenstudioStandards::Constructions.construction_get_conductance(surface_construction) u_factor_ip = OpenStudio.convert(u_factor_si, source_units, target_units).get shgc = OpenstudioStandards::Constructions.construction_get_solar_transmittance(surface_construction) # stop if didn't find values (0 or infinity) - next if target_u_value_ip[sub_surface_detail[:surface_type]] == 0.0 + next if target_u_value_ip[sub_surface_detail[:surface_type]] < 0.01 next if target_u_value_ip[sub_surface_detail[:surface_type]] == Float::INFINITY # check u avlues if u_factor_ip < target_u_value_ip[sub_surface_detail[:surface_type]] * (1.0 - min_pass_pct) check_elems << OpenStudio::Attribute.new('flag', "U value of #{u_factor_ip.round(2)} (#{target_units}) for #{sub_surface_detail[:construction].name} in #{space_type.name} is more than #{min_pass_pct * 100} % below the expected value of #{target_u_value_ip[sub_surface_detail[:surface_type]].round(2)} (#{target_units}) for #{display_standard}.") @@ -230,19 +230,19 @@ if surface_type.to_s == 'Door' then intended_surface_type = 'ExteriorDoor' end end film_coefficients_r_value = OpenstudioStandards::Constructions.film_coefficients_r_value(intended_surface_type, includes_int_film = true, includes_ext_film = true) thermal_conductance = sub_surface_detail[:construction].thermalConductance.get - r_value_with_film = 1 / thermal_conductance + film_coefficients_r_value + r_value_with_film = (1 / thermal_conductance) + film_coefficients_r_value source_units = 'm^2*K/W' target_units = 'ft^2*h*R/Btu' r_value_ip = OpenStudio.convert(r_value_with_film, source_units, target_units).get solar_reflectance = sub_surface_detail[:construction].to_LayeredConstruction.get.layers[0].to_OpaqueMaterial.get.solarReflectance.get # @todo check what happens with exterior air wall # stop if didn't find values (0 or infinity) - next if target_r_value_ip[sub_surface_detail[:surface_type]] == 0.0 + next if target_r_value_ip[sub_surface_detail[:surface_type]] < 0.01 next if target_r_value_ip[sub_surface_detail[:surface_type]] == Float::INFINITY # check r avlues if r_value_ip < target_r_value_ip[sub_surface_detail[:surface_type]] * (1.0 - min_pass_pct) check_elems << OpenStudio::Attribute.new('flag', "R value of #{r_value_ip.round(2)} (#{target_units}) for #{sub_surface_detail[:construction].name} in #{space_type.name} is more than #{min_pass_pct * 100} % below the expected value of #{target_r_value_ip[sub_surface_detail[:surface_type]].round(2)} (#{target_units}) for #{display_standard}.") @@ -321,11 +321,11 @@ standards_construction_type = 'Mass' end end film_coefficients_r_value = OpenstudioStandards::Constructions.film_coefficients_r_value(intended_surface_type, includes_int_film = true, includes_ext_film = true) thermal_conductance = surface_detail[:construction].thermalConductance.get - r_value_with_film = 1 / thermal_conductance + film_coefficients_r_value + r_value_with_film = (1 / thermal_conductance) + film_coefficients_r_value source_units = 'm^2*K/W' target_units = 'ft^2*h*R/Btu' r_value_ip = OpenStudio.convert(r_value_with_film, source_units, target_units).get solar_reflectance = surface_detail[:construction].to_LayeredConstruction.get.layers[0].to_OpaqueMaterial.get.solarReflectance.get # @todo check what happens with exterior air wall @@ -348,10 +348,10 @@ assembly_maximum_solar_heat_gain_coefficient = data['assembly_maximum_solar_heat_gain_coefficient'] end assembly_maximum_r_value_ip = 1 / assembly_maximum_u_value # stop if didn't find values (0 or infinity) - next if assembly_maximum_r_value_ip == 0.0 + next if assembly_maximum_r_value_ip < 0.01 next if assembly_maximum_r_value_ip == Float::INFINITY # check r avlues if r_value_ip < assembly_maximum_r_value_ip * (1.0 - min_pass_pct) check_elems << OpenStudio::Attribute.new('flag', "R value of #{r_value_ip.round(2)} (#{target_units}) for #{surface_detail[:construction].name} in #{space.name} is more than #{min_pass_pct * 100} % below the expected value of #{assembly_maximum_r_value_ip.round(2)} (#{target_units}) for #{display_standard}.")