-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create Rule_11-10.md #1373
base: develop
Are you sure you want to change the base?
Create Rule_11-10.md #1373
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@KarenWGard
A few clarification questions. I am good with implementation.
docs/section11/Rule_11-10.md
Outdated
|
||
- if the water heater is electric resistance storage and the capacity is <= 12kW (40945 btu/hr), look at Appendix F: `if swh_type in ["ELECTRIC_RESISTANCE_STORAGE"] and input_capacity <= 40945.7:` | ||
- check that the capacity_per_volume is < 4000 btu/hr/gallon: `if capacity_per_volume < 4000:` | ||
- check the size of the storage tank. If it's less than 2 gallons, provide a note, and continue to rule assertion: `if storage_volume < 2: rule_note += " The storage tank volume is less than 2 gallons and based on the size categories in ASHRAE 90.1 Table 7.8 and Appendix F it would not be classified as an electric storage water heater. Consequently, this rule was not assessed for this service water heater."; rule_status = FAIL; GO TO RULE ASSERTION` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am confused by the message here. If a rule is not assessed, shouldn't this be UNDETERMINED? Should the message just be ended at not be classified as an electric storage water heater
?
- if the water heater is electric resistance storage and the capacity is <= 12kW (40945 btu/hr), look at Appendix F: `if swh_type in ["ELECTRIC_RESISTANCE_STORAGE"] and input_capacity <= 40945.7:` | ||
- check that the capacity_per_volume is < 4000 btu/hr/gallon: `if capacity_per_volume < 4000:` | ||
- check the size of the storage tank. If it's less than 2 gallons, provide a note, and continue to rule assertion: `if storage_volume < 2: rule_note += " The storage tank volume is less than 2 gallons and based on the size categories in ASHRAE 90.1 Table 7.8 and Appendix F it would not be classified as an electric storage water heater. Consequently, this rule was not assessed for this service water heater."; rule_status = FAIL; GO TO RULE ASSERTION` | ||
- else, if the storage tank is is between 20 and 55 gallons, this is considered an electric storage water heater in Appendix F: `elif storage_volume >= 20 and storage_volume <= 55:` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What about electric water heaters with storage volumes between 2 gallon to 20 gallons?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is addressed on line 70
docs/section11/Rule_11-10.md
Outdated
|
||
- if the water heater is electric resistance storage and the capacity is <= 12kW (40945 btu/hr), look at Appendix F: `if swh_type in ["ELECTRIC_RESISTANCE_STORAGE"] and input_capacity <= 40945.7:` | ||
- check that the capacity_per_volume is < 4000 btu/hr/gallon: `if capacity_per_volume < 4000:` | ||
- check the size of the storage tank. If it's less than 2 gallons, provide a note, and continue to rule assertion: `if storage_volume < 2: rule_note += " The storage tank volume is less than 2 gallons and based on the size categories in ASHRAE 90.1 Table 7.8 and in 10 CFR 430, it would not be classified as an electric storage water heater. Consequently, this rule was not assessed for this service water heater. Note that the specific requirements of 10 CFR 430 can be found in ASHRAE 90.1 Appendix F Table F-2."; rule_status = UNDETERMINED; GO TO RULE ASSERTION` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be smaller than 20 gallon?
docs/section11/Rule_11-10.md
Outdated
- indicate with the note that the capacity per volume exceeds the limit: `rule_note += " Capacity per volume exceeds the limit of 4000 btu/hr/gallon given for Electric Storage Water Heaters in ASHRAE 90.1 Table 7.8."` | ||
- set the rule status to FAIL and continue to rule assertion: `rule_status = "FAIL"; CONTINUE TO RULE ASSERTION` | ||
|
||
- else if the storage volume is between 2 and 20 gallons, in which case there is no rating in APPENDIX F. set rule status to UNDETERMINED: `elif storage_volume < 20:` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bit confused by this logic - should this be nested inside the capacity per volume?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you are correct - it should've been inside the capacity per volume check
docs/section11/Rule_11-10.md
Outdated
- check electric storage water heaters with capacity greater than 12 kW: `if swh_type == "ELECTRIC_RESISTANCE_STORAGE" and input_capacity > 40945.7 (btu/hr):` | ||
- check that the capacity_per_volume is < 4000 btu/hr/gallon: `if capacity_per_volume < 4000:` | ||
- calculate the standby loss target: `standby_loss_target = 0.3 + (27/swh_eq.distribution_system.tank.storage_volume)` | ||
- check whether the standby loss fraction is given, if it's not given, provide a note, and a rule result of UNDETERMINED: `if swh_eq.standby_loss_fraction == NULL: rule_note += " Electric resistance water heaters with input capacity > 12kW have a required standby loss given by ASHRAE 90.1 Table 7.8. No standby loss was given for this water heater, thus the rule was not able to be evaluated."` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rule_status = "UNDETERMINED"?
docs/section11/Rule_11-10.md
Outdated
- check whether the uniform_energy_factor is valid: `if uniform_energy_factor != NULL | ||
- check if the actual uniform_energy_factor equal to the expected: `if uniform_energy_factor == expected_UEF and !has_faults:` | ||
- set rule_status to "PASS": `rule_status = "PASS"; CONTINUE TO RULE ASSERTION` | ||
- otherwise, set rule status to UNDETERMINED and provide a note: `else: rule_status = "UNDETERMINED"; rule_note += " Uniform Energy Factor is required but not provided"; CONTINUE TO RULE ASSERTION` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@yunjoonjung-PNNL or @JacksonJ-KC Actual implementation may set rule_note
type to a list and then join the strings with enter
as the separator.
@KarenWGard What is |
docs/section11/Rule_11-10.md
Outdated
- calculate the expected efficiency for MEDIUM draw pattern: `if draw_pattern == "MEDIUM": expected_UEF = 0.6002 – (0.0011 * volume)` | ||
- calculate the expected efficiency for HIGH draw pattern: `if draw_pattern == "HIGH": expected_UEF = 0.6597 – (0.0009 * volume)` | ||
- check whether the uniform_energy_factor is valid: `if uniform_energy_factor != NULL | ||
- check if the actual uniform_energy_factor equal to the expected: `if uniform_energy_factor == expected_UEF and !has_faults:` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
has_faults
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated from ruby to python syntax
docs/section11/Rule_11-10.md
Outdated
- make sure that the thermal efficiency is not NULL: `if thermal_efficiency != NULL:` | ||
- make sure that the standy loss is not NULL: `if swh_eq.standby_loss_fraction != NULL:` | ||
- get the standby loss (see note 1 for calculation source): `standby_loss = swh_eq.standby_loss_fraction * 8.25 * volume * 70` | ||
- check if the actual thermal efficiency is == to the expected: `if shw_eq.thermal_efficiency == expected_thermal_efficiency and standby_loss <= max_standby_loss and !has_faults:` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
has_faults
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sorry. Ruby syntax. Should be not has_faults
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no, the issue is has_faults is not defined anywhere
docs/section11/Rule_11-10.md
Outdated
- otherwise draw pattern is HIGH: `else: draw_pattern = "HIGH"` | ||
- get the capacity of the SHW system (make sure to convert to btu/hr): `input_capacity = swh_eq.input_power` | ||
- get the volume of the tank (make sure to convert to gallons): `storage_volume = swh_eq.distribution_system.tank.storage_capacity` | ||
- calculate the capacity_per_volume based on the input_capacity and the storage_volume: `capacity_per_volume = shw_eq.rated_capacity / storage_volume` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
english says input_capacity, python says rated_capacity. I think it should be input capacity but I am not positive
docs/section11/Rule_11-10.md
Outdated
- otherwise if the first_hour_rating is less than 75 gallons, draw pattern is MEDIUM: `elif first_hour_rating < 75: draw_pattern = "MEDIUM"` | ||
- otherwise draw pattern is HIGH: `else: draw_pattern = "HIGH"` | ||
- get the capacity of the SHW system (make sure to convert to btu/hr): `input_capacity = swh_eq.input_power` | ||
- get the volume of the tank (make sure to convert to gallons): `storage_volume = swh_eq.distribution_system.tank.storage_capacity` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
swh_eq .distribution_system .tank.storage_capacity
docs/section11/Rule_11-10.md
Outdated
- otherwise, this is an electric resistance water heater with input > 12 kW, continue with logic per Table 7.8: `else:` | ||
- check electric storage water heaters with capacity greater than 12 kW: `if swh_type == "ELECTRIC_RESISTANCE_STORAGE" and input_capacity > 40945.7 (btu/hr):` | ||
- check that the capacity_per_volume is < 4000 btu/hr/gallon: `if capacity_per_volume < 4000:` | ||
- calculate the standby loss target: `standby_loss_target = 0.3 + (27/swh_eq.distribution_system.tank.storage_volume)` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
swh_eq .distribution_system .tank.storage_volume
docs/section11/Rule_11-10.md
Outdated
|
||
- otherwise, the capacity per volume is not < 4000 btu/ gallon: `else:` | ||
- indicate with the note that the capacity per volume exceeds the limit: `rule_note += " Capacity per volume exceeds the limit of 4000 btu/hr/gallon given for Electric Storage Water Heaters in ASHRAE 90.1 Table 7.8."` | ||
- set the rule status to FAIL and continue to rule assertion: `rule_status = "FAIL"; CONTINUE TO RULE ASSERTION` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here we FAIL when capacity_per_volume > 4000
docs/section11/Rule_11-10.md
Outdated
- otherwise: `else:` | ||
- set the note to indicate that the standby_loss is higher than the maximum allowed: `rule_note += " Standby Loss is higher than required by Table 7.8"; rule_status = FAIL; GO TO RULE ASSERTION` | ||
- otherwise: `else:` | ||
- set the note to indicate that the capacity per volume exceeds the limit: `rule_note += " Capacity per volume exceeds the limit of 4000 btu/hr/gallon given for Electric Storage Water Heaters in ASHRAE 90.1 Table 7.8."; rule_status = FAIL; GO TO RULE ASSERTION` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here we FAIL when capacity_per_volume > 4000
docs/section11/Rule_11-10.md
Outdated
- change rule_status to UNDETERMINED: `rule_status = "UNDETERMINED"; CONTINUE TO RULE ASSERTION` | ||
- check if the capacity <= 105,000 btu/hr: `elif input_capacity <= 105000:` | ||
- the capacity per volume should be < 4000 btu/hr/gallon: `if capacity_per_volume >= 4000:` | ||
- add the to the rule note: `rule_note += "Based on the size categories for gas storage water heaters in ASHRAE 90.1 Table 7.8, gas storage water heaters with an input capacity between 75,000 and 105,000 btu/hr shall have a capacity per volume of 4,000 btu/hr/gallon. This water heater has a capacity per gallon of " + capacity_per_volume + " btu/hr/gallon. Consequently, this rule was not able to be assesed for this service water heater. "; rule_status = "UNDETERMINED"; CONTINUE TO RULE ASSERTION` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here we UNDETERMINED when capacity_per_volume > 4000
docs/section11/Rule_11-10.md
Outdated
- otherwise, set rule status to UNDETERMINED and provide a note: `else: rule_status = "UNDETERMINED"; rule_note += " Uniform Energy Factor is required but not provided"; CONTINUE TO RULE ASSERTION` | ||
- otherwise the capacity is > 105,000 btu/hr: `else:` | ||
- the capacity per volume should be < 4000 btu/hr/gallon: `if capacity_per_volume >= 4000:` | ||
- add to the rule note: `rule_note += "Based on the size categories for gas storage water heaters in ASHRAE 90.1 Table 7.8, gas storage water heaters with an input capacity greater than 105,000 btu/hr shall have a capacity per volume of 4,000 btu/hr/gallon. This water heater has a capacity per gallon of " + capacity_per_volume + " btu/hr/gallon. Consequently, this rule was not able to be assesed for this service water heater. "; rule_status = UNDETERMINED` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here we UNDETERMINED when capacity_per_volume > 4000
@KarenWGard Is inconsistent behavior when capacity_per_volume > 4000 intentional? |
docs/section11/Rule_11-10.md
Outdated
- calculate the expected_thermal_efficiency : `expected_thermal_efficiency = 0.8` | ||
- calculate max_standby_loss (btu/hr): `max_standby_loss = (input_capacity/800 + 110 * sqrt(volume))` | ||
- make sure that the thermal efficiency is not NULL: `if thermal_efficiency != NULL:` | ||
- make sure that the standy loss is not NULL: `if swh_eq.standby_loss_fraction != NULL:` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agree this should be STANDBY_LOSS_ENERGY
? not fraction?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes
|
||
**Applicability Checks:** | ||
- Each SHW Equipment is applicable | ||
- use get_SHW_equipment_associated_with_each_SWH_bat to get the SHW BATs and SHW use in the building: `shw_bats_and_equip_dict = get_SWH_components_associated_with_each_SWH_bat(B_RMD)` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shw_bats_and_equip_dict
is defined but never used. Is this needed for anything that we missed?
docs/section11/Rule_11-10.md
Outdated
- set the note to indicate that the standby_loss is higher than the maximum allowed: `rule_note += " Standby Loss is higher than required by Table 7.8"; rule_status = FAIL; GO TO RULE ASSERTION` | ||
- otherwise: `else:` | ||
- set the note to indicate that the capacity per volume exceeds the limit: `rule_note += " Capacity per volume exceeds the limit of 4000 btu/hr/gallon given for Electric Storage Water Heaters in ASHRAE 90.1 Table 7.8."; rule_status = FAIL; GO TO RULE ASSERTION` | ||
- check if the water heater is gas storage: `if swh_type == "GAS_STORAGE":` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this check is inside of the branch where: "this is an electric resistance water heater with input > 12 kW"
`
- set the swh_type based on tank_type and fuel type: `if fuel_type == "ELECTRICITY": swh_type = "ELECTRIC_RESISTANCE_STORAGE` | ||
- `elif fuel_type == "NATURAL_GAS": swh_type = "GAS_STORAGE` | ||
- if the fuel type is propane, this is treated as natural gas in Table 7.8: `elif fuel_type == "PROPANE": swh_type = "GAS_STORAGE"` | ||
- if the fuel type is not Electricity, Natural Gas, or Propane, this is not a valid baseline SWH system. Create a rule note and go directly to the rule assertion: `else: rule_note += "Fuel type: " + fuel_type + " is not a valid fuel type for a service water heating baseline system. According to ASHRAE 90.1 Table G3.1.1-2 service water heating equipment shall be either electric resistance or natural gas. According to ASHRAE 90.1 Table G3.1 #11 h, in cases where natural gas is specified as the baseline system, but there is no natural gas available on site, a propane system may be modeled. "; rule_status = FAIL; GO TO RULE ASSERTION ` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this FAIL duplicating a FAIL received in rule 11-7 due to the fuel type not matching? if so, suggest UNDETERMINED
No description provided.