Skip to content

Commit

Permalink
Incorporating updates from nrcan branch (#1515)
Browse files Browse the repository at this point in the history
* Add json file for compressor type of air cooled chiller for ECM HS14

* Add water cooled chiller type json for NECB and update name of chiller based on compressor type

* Update initial name of water-cooled chiller in ECM HS14

Set name of 'Screw' chillers to 'Rotary Screw'

Set default 'chiller_type' in file 'fuel_type_sets.json' to empty. In this case chiller type is set based on information in new file 'chiller_types.json'.

Update standard method for setting efficiency and curves of water cooled electric chillers to deal with the situation when the chiller name doesn't have information on the chiller type. If the name doesn't have information on the chiller type then this will be
set based on information from the new file 'chiller_types.json'.

Modify method in class 'BTAPPRE1980' to modify name of chiller when the original name doesn't include a compressor type

Update building regression tests osm files

---------

Co-authored-by: khaddad <khaddad.energy.eng@gmail.com>
  • Loading branch information
ckirney and khaddad authored May 29, 2023
1 parent 1512971 commit 48cbee5
Show file tree
Hide file tree
Showing 277 changed files with 1,652,801 additions and 1,652,123 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -201,12 +201,15 @@ def replace_compressor_name(chiller:, comp_type:, chillers:)
new_name = chiller_name
# Go through each chiller compressor type from the chiller table and see if it is in the chiller name. If it is,
# then replace the old compressor type in the name with the new one.
chlr_name_updated = false
chiller_types.each do |chill_type|
if chiller_name.include? chill_type['compressor_type']
new_name = chiller_name.sub(chill_type['compressor_type'], comp_type)
chlr_name_updated = true
break
end
end
new_name = chiller_name + ' ' + comp_type if !chlr_name_updated
chiller.setName(new_name)
return chiller
end
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"tables": {
"chiller_types_ecm": {
"refs": [
"assumption"
],
"table": [
{
"cooling_type": "AirCooled",
"compressor_type": "Scroll",
"minimum_capacity": 0.0,
"maximum_capacity": 150.0,
"notes": "Chiller type set based on survey of major chiller manufacturers data"
},
{
"cooling_type": "AirCooled",
"compressor_type": "Rotary Screw",
"minimum_capacity": 150.0,
"maximum_capacity": 9999.0,
"notes": "Chiller type set based on survey of major chiller manufacturers data"
}
]
}
}
}
16 changes: 2 additions & 14 deletions lib/openstudio-standards/standards/necb/ECMS/data/chillers.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,13 @@
"table": [
{
"name": "NECB2020_AirCooledChiller",
"chiller_type": "Scroll",
"minimum_capacity": 0.0,
"maximum_capacity": 150.0,
"maximum_capacity": 9999.0,
"minimum_coefficient_of_performance_cooling": 2.866,
"capft": null,
"eirft": null,
"eirfplr": null,
"notes": "NECB 2020 Air Cooled Chiller COP. Capacity in ton. Capacity range based on survey of manufacturers data"
},
{
"name": "NECB2020_AirCooledChiller",
"chiller_type": "Screw",
"minimum_capacity": 150.0,
"maximum_capacity": 999.0,
"minimum_coefficient_of_performance_cooling": 2.866,
"capft": null,
"eirft": null,
"eirfplr": null,
"notes": "NECB 2020 Air Cooled Chiller COP. Capacity in ton. Capacity range based on survey of manufacturers data"
"notes": "NECB 2020 Table 5.2.12.1.-K Air Cooled Chiller COP. Capacity in ton."
}
]
}
Expand Down
5 changes: 4 additions & 1 deletion lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1987,11 +1987,14 @@ def apply_efficiency_ecm_hs14_cgshp_fancoils(model)
chlr_cap_w = (1.0-chiller_siz_f)*cap
chlr_cap_ton = OpenStudio.convert(chlr_cap_w, 'W', 'ton').get
search_criteria = {}
search_criteria['cooling_type'] = 'AirCooled'
chlr_props = model_find_object(standards_data['tables']['chiller_types_ecm']['table'], search_criteria, chlr_cap_ton)
chiller_air_cooled.setName("Chiller AirCooled #{chlr_props['compressor_type']}")
search_criteria = {}
search_criteria['name'] = 'NECB2020_AirCooledChiller'
chlr_props = model_find_object(standards_data['tables']['chillers_ecm']['table'], search_criteria, chlr_cap_ton)
cop = chlr_props['minimum_coefficient_of_performance_cooling'].to_f
chiller_air_cooled.setReferenceCOP(cop)
chiller_air_cooled.setName("Chiller AirCooled #{chlr_props['chiller_type']}")
end

#=============================================================================================================================
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"tables": {
"chiller_types": {
"refs": [
"assumption"
],
"table": [
{
"cooling_type": "WaterCooled",
"compressor_type": "Scroll",
"minimum_capacity": 0.0,
"maximum_capacity": 30.0,
"notes": "Chiller type set based on survey of major chiller manufacturer data"
},
{
"cooling_type": "WaterCooled",
"compressor_type": "Rotary Screw",
"minimum_capacity": 30.0,
"maximum_capacity": 200.0,
"notes": "Chiller type set based on survey of major chiller manufacturer data"
},
{
"cooling_type": "WaterCooled",
"compressor_type": "Centrifugal",
"minimum_capacity": 200.0,
"maximum_capacity": 9999.0,
"notes": "Chiller type set based on survey of major chiller manufacturer data"
}
]
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -296,4 +296,4 @@
]
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"mau_type": true,
"mau_heating_coil_type": "Hot Water",
"mau_cooling_type": "DX",
"chiller_type": "Scroll",
"chiller_type": "",
"heating_coil_type_sys3": "Gas",
"heating_coil_type_sys4": "Gas",
"heating_coil_type_sys6": "Hot Water",
Expand All @@ -34,7 +34,7 @@
"mau_type": true,
"mau_heating_coil_type": "DX",
"mau_cooling_type": "DX",
"chiller_type": "Scroll",
"chiller_type": "",
"heating_coil_type_sys3": "DX",
"heating_coil_type_sys4": "DX",
"heating_coil_type_sys6": "DX",
Expand All @@ -51,7 +51,7 @@
"mau_type": true,
"mau_heating_coil_type": "DX",
"mau_cooling_type": "DX",
"chiller_type": "Scroll",
"chiller_type": "",
"heating_coil_type_sys3": "DX",
"heating_coil_type_sys4": "DX",
"heating_coil_type_sys6": "DX",
Expand All @@ -68,7 +68,7 @@
"mau_type": true,
"mau_heating_coil_type": "Electric",
"mau_cooling_type": "DX",
"chiller_type": "Scroll",
"chiller_type": "",
"heating_coil_type_sys3": "Electric",
"heating_coil_type_sys4": "Electric",
"heating_coil_type_sys6": "Electric",
Expand All @@ -86,7 +86,7 @@
"mau_type": true,
"mau_heating_coil_type": "DX",
"mau_cooling_type": "DX",
"chiller_type": "Scroll",
"chiller_type": "",
"heating_coil_type_sys3": "DX",
"heating_coil_type_sys4": "DX",
"heating_coil_type_sys6": "DX",
Expand All @@ -103,7 +103,7 @@
"mau_type": true,
"mau_heating_coil_type": "DX",
"mau_cooling_type": "DX",
"chiller_type": "Scroll",
"chiller_type": "",
"heating_coil_type_sys3": "DX",
"heating_coil_type_sys4": "DX",
"heating_coil_type_sys6": "DX",
Expand All @@ -119,7 +119,7 @@
"mau_type": true,
"mau_heating_coil_type": "Hot Water",
"mau_cooling_type": "DX",
"chiller_type": "Scroll",
"chiller_type": "",
"heating_coil_type_sys3": "Electric",
"heating_coil_type_sys4": "Electric",
"heating_coil_type_sys6": "Electric",
Expand Down
21 changes: 19 additions & 2 deletions lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,24 @@ def chiller_electric_eir_apply_efficiency_and_curves(chiller_electric_eir, clg_t
# Convert capacity to tons
capacity_tons = OpenStudio.convert(chiller_capacity, 'W', 'ton').get

# Get chiller compressor type if needed
chiller_types = ['reciprocating','scroll','rotary screw','centrifugal']
chiller_name_has_type = chiller_types.any? {|type| chiller_electric_eir.name.to_s.downcase.include? type}
unless chiller_name_has_type
chlr_type_search_criteria = {}
chlr_type_search_criteria['cooling_type'] = cooling_type
chlr_types_table = @standards_data['chiller_types']
chlr_type_props = model_find_object(chlr_types_table, chlr_type_search_criteria, capacity_tons)
unless chlr_type_props
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find chiller type information")
successfully_set_all_properties = false
return successfully_set_all_properties
end
compressor_type = chlr_type_props['compressor_type']
chiller_electric_eir.setName(chiller_electric_eir.name.to_s + ' ' + compressor_type)
end
# Get the chiller properties
search_criteria['compressor_type'] = compressor_type
chlr_table = @standards_data['chillers']
chlr_props = model_find_object(chlr_table, search_criteria, capacity_tons, Date.today)
unless chlr_props
Expand Down Expand Up @@ -1666,9 +1683,9 @@ def setup_chw_loop_with_components(model, chw_loop, chiller_type)
chiller2 = OpenStudio::Model::ChillerElectricEIR.new(model)
chiller1.setCondenserType('WaterCooled')
chiller2.setCondenserType('WaterCooled')
chiller1_name = "Primary Chiller WaterCooled #{chiller_type}"
chiller1_name = "Primary Chiller WaterCooled #{chiller_type}".strip
chiller1.setName(chiller1_name)
chiller2_name = "Secondary Chiller WaterCooled #{chiller_type}"
chiller2_name = "Secondary Chiller WaterCooled #{chiller_type}".strip
chiller2.setName(chiller2_name)

chiller_bypass_pipe = OpenStudio::Model::PipeAdiabatic.new(model)
Expand Down
17 changes: 17 additions & 0 deletions lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,24 @@ def chiller_electric_eir_apply_efficiency_and_curves(chiller_electric_eir, clg_t
# Convert capacity to tons
capacity_tons = OpenStudio.convert(chiller_capacity, 'W', 'ton').get

# Get chiller compressor type if needed
chiller_types = ['reciprocating','scroll','rotary screw','centrifugal']
chiller_name_has_type = chiller_types.any? {|type| chiller_electric_eir.name.to_s.downcase.include? type}
unless chiller_name_has_type
chlr_type_search_criteria = {}
chlr_type_search_criteria['cooling_type'] = cooling_type
chlr_types_table = @standards_data['chiller_types']
chlr_type_props = model_find_object(chlr_types_table, chlr_type_search_criteria, capacity_tons)
unless chlr_type_props
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find chiller types information")
successfully_set_all_properties = false
return successfully_set_all_properties
end
compressor_type = chlr_type_props['compressor_type']
chiller_electric_eir.setName(chiller_electric_eir.name.to_s + ' ' + compressor_type)
end
# Get the chiller properties
search_criteria['compressor_type'] = compressor_type
chlr_table = @standards_data['chillers']
chlr_props = model_find_object(chlr_table, search_criteria, capacity_tons, Date.today)
unless chlr_props
Expand Down
Loading

0 comments on commit 48cbee5

Please sign in to comment.