Class: OpenStudio::Model::BoilerHotWater
- Inherits:
-
Object
- Object
- OpenStudio::Model::BoilerHotWater
- Defined in:
- lib/openstudio-standards/standards/Standards.BoilerHotWater.rb,
lib/openstudio-standards/hvac_sizing/Siz.BoilerHotWater.rb
Overview
open the class to add methods to return sizing values
Instance Method Summary collapse
-
#apply_efficiency_and_curves(template) ⇒ Bool
Applies the standard efficiency ratings and typical performance curves to this object.
-
#applySizingValues ⇒ Object
Takes the values calculated by the EnergyPlus sizing routines and puts them into this object model in place of the autosized fields.
-
#autosize ⇒ Object
Sets all auto-sizeable fields to autosize.
-
#autosizedDesignWaterFlowRate ⇒ Object
returns the autosized design water flow rate as an optional double.
-
#autosizedNominalCapacity ⇒ Object
returns the autosized nominal capacity as an optional double.
-
#find_capacity ⇒ Double
Find capacity in W.
-
#find_search_criteria(template) ⇒ Hash
find search criteria.
-
#standard_minimum_thermal_efficiency(template, rename = false) ⇒ Double
Finds lookup object in standards and return minimum thermal efficiency.
Instance Method Details
#apply_efficiency_and_curves(template) ⇒ Bool
Applies the standard efficiency ratings and typical performance curves to this object.
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 |
# File 'lib/openstudio-standards/standards/Standards.BoilerHotWater.rb', line 117 def apply_efficiency_and_curves(template) successfully_set_all_properties = false # Define the criteria to find the boiler properties # in the hvac standards data set. search_criteria = find_search_criteria(template) fuel_type = search_criteria['fuel_type'] fluid_type = search_criteria['fluid_type'] # Get the capacity capacity_w = find_capacity # for NECB, check if secondary and/or modulating boiler required if template == 'NECB 2011' if capacity_w / 1000.0 >= 352.0 if name.to_s.include?('Primary Boiler') boiler_capacity = capacity_w setBoilerFlowMode('LeavingSetpointModulated') setMinimumPartLoadRatio(0.25) elsif name.to_s.include?('Secondary Boiler') boiler_capacity = 0.001 end elsif ((capacity_w / 1000.0) >= 176.0) && ((capacity_w / 1000.0) < 352.0) boiler_capacity = capacity_w / 2 elsif (capacity_w / 1000.0) <= 176.0 if name.to_s.include?('Primary Boiler') boiler_capacity = capacity_w elsif name.to_s.include?('Secondary Boiler') boiler_capacity = 0.001 end end setNominalCapacity(boiler_capacity) end # NECB 2011 # Convert capacity to Btu/hr if template == 'NECB 2011' capacity_btu_per_hr = OpenStudio.convert(boiler_capacity, 'W', 'Btu/hr').get capacity_kbtu_per_hr = OpenStudio.convert(boiler_capacity, 'W', 'kBtu/hr').get else capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get end # Get the boiler properties blr_props = model.find_object($os_standards['boilers'], search_criteria, capacity_btu_per_hr) unless blr_props OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name}, cannot find boiler properties, cannot apply efficiency standard.") successfully_set_all_properties = false return successfully_set_all_properties end # Make the EFFFPLR curve eff_fplr = model.add_curve(blr_props['efffplr']) if eff_fplr setNormalizedBoilerEfficiencyCurve(eff_fplr) else OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name}, cannot find eff_fplr curve, will not be set.") successfully_set_all_properties = false end # Get the minimum efficiency standards thermal_eff = nil # If specified as AFUE unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil? min_afue = blr_props['minimum_annual_fuel_utilization_efficiency'] thermal_eff = afue_to_thermal_eff(min_afue) new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}") end # If specified as thermal efficiency unless blr_props['minimum_thermal_efficiency'].nil? thermal_eff = blr_props['minimum_thermal_efficiency'] new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{thermal_eff} Thermal Eff" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Thermal Efficiency = #{thermal_eff}") end # If specified as combustion efficiency unless blr_props['minimum_combustion_efficiency'].nil? min_comb_eff = blr_props['minimum_combustion_efficiency'] thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff) new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}") end # Set the name setName(new_comp_name) # Set the efficiency values unless thermal_eff.nil? setNominalThermalEfficiency(thermal_eff) end return successfully_set_all_properties end |
#applySizingValues ⇒ Object
Takes the values calculated by the EnergyPlus sizing routines and puts them into this object model in place of the autosized fields. Must have previously completed a run with sql output for this to work.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.BoilerHotWater.rb', line 13 def applySizingValues nominal_capacity = self.autosizedNominalCapacity if nominal_capacity.is_initialized self.setNominalCapacity(nominal_capacity.get) end design_water_flow_rate = self.autosizedDesignWaterFlowRate if design_water_flow_rate.is_initialized self.setDesignWaterFlowRate(design_water_flow_rate.get) end end |
#autosize ⇒ Object
Sets all auto-sizeable fields to autosize
6 7 8 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.BoilerHotWater.rb', line 6 def autosize OpenStudio::logFree(OpenStudio::Warn, "openstudio.sizing.BoilerHotWater", ".autosize not yet implemented for #{self.iddObject.type.valueDescription}.") end |
#autosizedDesignWaterFlowRate ⇒ Object
returns the autosized design water flow rate as an optional double
35 36 37 38 39 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.BoilerHotWater.rb', line 35 def autosizedDesignWaterFlowRate return self.model.getAutosizedValue(self, 'Design Size Design Water Flow Rate', 'm3/s') end |
#autosizedNominalCapacity ⇒ Object
returns the autosized nominal capacity as an optional double
28 29 30 31 32 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.BoilerHotWater.rb', line 28 def autosizedNominalCapacity return self.model.getAutosizedValue(self, 'Design Size Nominal Capacity', 'W') end |
#find_capacity ⇒ Double
Find capacity in W
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/openstudio-standards/standards/Standards.BoilerHotWater.rb', line 40 def find_capacity capacity_w = nil if nominalCapacity.is_initialized capacity_w = nominalCapacity.get elsif autosizedNominalCapacity.is_initialized capacity_w = autosizedNominalCapacity.get else OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name} capacity is not available, cannot apply efficiency standard.") successfully_set_all_properties = false return successfully_set_all_properties end return capacity_w end |
#find_search_criteria(template) ⇒ Hash
find search criteria
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/openstudio-standards/standards/Standards.BoilerHotWater.rb', line 8 def find_search_criteria(template) # Define the criteria to find the boiler properties # in the hvac standards data set. search_criteria = {} search_criteria['template'] = template # Get fuel type fuel_type = nil case fuelType when 'NaturalGas' fuel_type = 'Gas' when 'Electricity' fuel_type = 'Electric' when 'FuelOil#1', 'FuelOil#2' fuel_type = 'Oil' else OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name}, a fuel type of #{fuelType} is not yet supported. Assuming 'Gas.'") fuel_type = 'Gas' end search_criteria['fuel_type'] = fuel_type # Get the fluid type fluid_type = 'Hot Water' search_criteria['fluid_type'] = fluid_type return search_criteria end |
#standard_minimum_thermal_efficiency(template, rename = false) ⇒ Double
Finds lookup object in standards and return minimum thermal efficiency
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/openstudio-standards/standards/Standards.BoilerHotWater.rb', line 60 def standard_minimum_thermal_efficiency(template, rename=false) # Get the boiler properties search_criteria = find_search_criteria(template) capacity_w = find_capacity capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get # Get the minimum efficiency standards thermal_eff = nil # Get the boiler properties blr_props = model.find_object($os_standards['boilers'], search_criteria, capacity_btu_per_hr) unless blr_props OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name}, cannot find boiler properties, cannot apply efficiency standard.") successfully_set_all_properties = false return successfully_set_all_properties end fuel_type = blr_props['fuel_type'] fluid_type = blr_props['fluid_type'] # If specified as AFUE unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil? min_afue = blr_props['minimum_annual_fuel_utilization_efficiency'] thermal_eff = afue_to_thermal_eff(min_afue) new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}") end # If specified as thermal efficiency unless blr_props['minimum_thermal_efficiency'].nil? thermal_eff = blr_props['minimum_thermal_efficiency'] new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{thermal_eff} Thermal Eff" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Thermal Efficiency = #{thermal_eff}") end # If specified as combustion efficiency unless blr_props['minimum_combustion_efficiency'].nil? min_comb_eff = blr_props['minimum_combustion_efficiency'] thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff) new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}") end # Rename if rename setName(new_comp_name) end return thermal_eff end |