Skip to content
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

Demo Issues in RMD ID Mismatch #1667

Draft
wants to merge 4 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions rct229/rule_engine/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,10 @@ def evaluate_rules(
outcomes.append(outcome)
else:
for rule in rules_list:
if rule.id in ["1-6", "1-7", "1-8"]:
continue
# if rule.id != "5-35":
# continue
print(f"Processing Rule {rule.id}")
outcome = rule.evaluate(copied_rmds)
outcomes.append(outcome)
Expand Down
100 changes: 51 additions & 49 deletions rct229/rulesets/ashrae9012019/data/ASHRAE229.9012019.extra.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,17 @@
"AppG B_RMD Equals P_RMD": "unknown",
"AppG B_RMDs Same": "unknown"
},
"altitude": {
"Description": "Altitude of the building at ground level.",
"Data Type": "Numeric",
"Range": ">-1000, <10000",
"Units": "m",
"RMD Test": true,
"AppG Used By TCDs": true,
"AppG P_RMD Equals U_RMD": true,
"AppG B_RMD Equals P_RMD": true,
"AppG B_RMDs Same": "unknown"
},
"fluid_loops": {
"Description": "Fluid loops on the site",
"Data Type": "[{FluidLoop}]",
Expand Down Expand Up @@ -3308,17 +3319,17 @@
"AppG B_RMD Equals P_RMD": "unknown",
"AppG B_RMDs Same": "unknown"
},
"heatpump_auxilliary_heat_type": {
"Description": "Heatpump auxilliary heat type used for backup",
"heatpump_auxiliary_heat_type": {
"Description": "Heatpump auxiliary heat type used for backup",
"Data Type": "<HeatpumpAuxilliaryHeatOptions>",
"RMD Test": "Primary",
"AppG Used By TCDs": true,
"AppG P_RMD Equals U_RMD": true,
"AppG B_RMD Equals P_RMD": false,
"AppG B_RMDs Same": "unknown"
},
"heatpump_auxilliary_heat_high_shutoff_temperature": {
"Description": "Heatpump auxilliary heat high temperature shutoff",
"heatpump_auxiliary_heat_high_shutoff_temperature": {
"Description": "Heatpump auxiliary heat high temperature shutoff",
"Data Type": "Numeric",
"Units": "C",
"RMD Test": "Primary",
Expand Down Expand Up @@ -5544,19 +5555,19 @@
"AppG B_RMD Equals P_RMD": false,
"AppG B_RMDs Same": "unknown"
},
"efficiency_metric": {
"efficiency_metric_types": {
"Description": "The type of efficiency metric used",
"Data Type": "<BoilerEfficiencyMetricOptions>",
"Data Type": "[<BoilerEfficiencyMetricOptions>]",
"RMD Test": "Primary",
"AppG Used By TCDs": true,
"AppG P_RMD Equals U_RMD": true,
"AppG B_RMD Equals P_RMD": false,
"AppG B_RMDs Same": "unknown"
},
"efficiency": {
"efficiency_metric_values": {
"Description": "Efficiency value based on the selected efficiency_metric",
"Data Type": "Numeric",
"Range": ">=0, <=1",
"Data Type": "[Numeric]",
"Range": ">=0",
"RMD Test": "Primary",
"AppG Used By TCDs": true,
"AppG P_RMD Equals U_RMD": true,
Expand Down Expand Up @@ -6718,6 +6729,17 @@
"AppG 11-1 P_RMD Equals U_RMD": true,
"AppG 11-3 P_RMD Equals B_RMD": true
},
"are_thermal_losses_modeled": {
"Description": "Indicates if thermal losses from the service water heating piping are modeled",
"Data Type": "Boolean",
"RMD Test": "unknown",
"AppG Used By TCDs": "unknown",
"AppG P_RMD Equals U_RMD": "unknown",
"AppG B_RMD Equals P_RMD": "unknown",
"AppG B_RMDs Same": "unknown",
"AppG 11-1 P_RMD Equals U_RMD": true,
"AppG 11-3 P_RMD Equals B_RMD": true
},
"insulation_thickness": {
"Description": "Pipe insulation thickness",
"Data Type": "Numeric",
Expand Down Expand Up @@ -6794,6 +6816,18 @@
"AppG B_RMDs Same": "unknown",
"AppG 11-1 P_RMD Equals U_RMD": true,
"AppG 11-3 P_RMD Equals B_RMD": true
},
"service_water_heating_design_and_control": {
"Description": "Design and control used for service heating piping",
"Data Type": "{FluidLoopDesignAndControl}",
"Notes": "References a FluidLoopDesignAndControl data group which describes how the service water piping is sized and controlled",
"RMD Test": "unknown",
"AppG Used By TCDs": "unknown",
"AppG P_RMD Equals U_RMD": "unknown",
"AppG B_RMD Equals P_RMD": "unknown",
"AppG B_RMDs Same": "unknown",
"AppG 11-1 P_RMD Equals U_RMD": false,
"AppG 11-3 P_RMD Equals B_RMD": false
}
}
},
Expand Down Expand Up @@ -6971,55 +7005,23 @@
"AppG 11-1 P_RMD Equals U_RMD": true,
"AppG 11-3 P_RMD Equals B_RMD": true
},
"energy_factor": {
"Description": "Energy factor",
"Data Type": "Numeric",
"Range": ">=0",
"Notes": "From CBECC-Com.",
"RMD Test": "unknown",
"AppG Used By TCDs": "unknown",
"AppG P_RMD Equals U_RMD": "unknown",
"AppG B_RMD Equals P_RMD": "unknown",
"AppG B_RMDs Same": "unknown",
"AppG 11-1 P_RMD Equals U_RMD": true,
"AppG 11-3 P_RMD Equals B_RMD": true
},
"thermal_efficiency": {
"Description": "Service water heating heater thermal efficiency",
"Data Type": "Numeric",
"Range": ">=0",
"RMD Test": "unknown",
"AppG Used By TCDs": "unknown",
"AppG P_RMD Equals U_RMD": "unknown",
"AppG B_RMD Equals P_RMD": "unknown",
"AppG B_RMDs Same": "unknown",
"AppG 11-1 P_RMD Equals U_RMD": true,
"AppG 11-3 P_RMD Equals B_RMD": true
},
"standby_loss_fraction": {
"Description": "Standby loss fraction",
"Data Type": "Numeric",
"Notes": "From CBECC-Com.",
"efficiency_metric_types": {
"Description": "List of efficiency metrics that correspond to the values in efficiency_metric_values list",
"Data Type": "[<ServiceWaterHeatingEfficiencyMetricOptions>]",
"RMD Test": "unknown",
"AppG Used By TCDs": "unknown",
"AppG P_RMD Equals U_RMD": "unknown",
"AppG B_RMD Equals P_RMD": "unknown",
"AppG B_RMDs Same": "unknown",
"AppG 11-1 P_RMD Equals U_RMD": true,
"AppG 11-3 P_RMD Equals B_RMD": true
"AppG B_RMDs Same": "unknown"
},
"uniform_energy_factor": {
"Description": "Uniform energy factor",
"Data Type": "Numeric",
"Range": ">=0",
"Notes": "From CBECC-Com.",
"efficiency_metric_values": {
"Description": "List of efficiency metric values that correspond to the descriptors in efficiency_metric_types list",
"Data Type": "[Numeric]",
"RMD Test": "unknown",
"AppG Used By TCDs": "unknown",
"AppG P_RMD Equals U_RMD": "unknown",
"AppG B_RMD Equals P_RMD": "unknown",
"AppG B_RMDs Same": "unknown",
"AppG 11-1 P_RMD Equals U_RMD": true,
"AppG 11-3 P_RMD Equals B_RMD": true
"AppG B_RMDs Same": "unknown"
},
"first_hour_rating": {
"Description": "First hour rating volume",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from rct229.utils.jsonpath_utils import find_all

SpaceFunctionOptions = SchemaEnums.schema_enums["SpaceFunctionOptions"]
LightingSpaceOptions = SchemaEnums.schema_enums["LightingSpaceOptions2019ASHRAE901TG37"]


def get_building_lab_zones_list(rmd: dict) -> list[str]:
Expand All @@ -22,6 +23,7 @@ def get_building_lab_zones_list(rmd: dict) -> list[str]:
if any(
[
space.get("function") == SpaceFunctionOptions.LABORATORY
or space.get("lighting_space_type") == LightingSpaceOptions.LABORATORY_EXCEPT_IN_OR_AS_A_CLASSROOM
for space in find_all("$.spaces[*]", zone)
]
):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ def get_baseline_system_types(rmd_b: dict) -> dict[HVAC_SYS, list[str]]:
hvac_b_id = hvac_b["id"]
assert_(
dict_of_zones_and_terminal_units_served_by_hvac_sys.get(hvac_b_id),
f"HVAC system {hvac_b_id} is missing in the HeatingVentilatingAiConditioningSystems data group.",
f"HVAC system {hvac_b_id} is missing in the HeatingVentilatingAirConditioningSystems data group.",
)

terminal_unit_id_list = dict_of_zones_and_terminal_units_served_by_hvac_sys[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@
"building": {
"building_segments[*].zones[*].spaces[*]": [
"floor_area",
],
"building_segments[*].zones[*].terminals[*]": [
"served_by_heating_ventilating_air_conditioning_system"
],
]
}
}

Expand Down Expand Up @@ -82,9 +79,11 @@ def get_hvac_zone_list_w_area_dict(building: dict) -> dict[str, HVACZoneListArea
zone_area = sum(find_all("spaces[*].floor_area", zone), ZERO.AREA)
assert_(zone_area > ZERO.AREA, f"zone:{zone['id']} has zero floor area")
for terminal in terminals:
hvac_sys_id = terminal[
hvac_sys_id = terminal.get(
"served_by_heating_ventilating_air_conditioning_system"
]
)
if not hvac_sys_id:
continue

# Initialize the hvac_sys entry if not already there
if hvac_sys_id not in hvac_zone_list_w_area_dict:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,7 @@ class ZoneConditioningCategory:
],
"building_segments[*].zones[*].surfaces[*].subsurfaces[*]": [
"u_factor",
],
"building_segments[*].zones[*].terminals[*]": [
"served_by_heating_ventilating_air_conditioning_system"
],
]
}
}

Expand Down Expand Up @@ -125,7 +122,7 @@ def get_zone_conditioning_category_dict(
]
if assert_(
hvac_systems_dict.get(hvac_sys_id),
f"HVAC system {hvac_sys_id} is missing in the HeatingVentilatingAiConditioningSystems data group.",
f"HVAC system {hvac_sys_id} is missing in the HeatingVentilatingAirConditioningSystems data group.",
)
and find_one(
"$.cooling_system.design_sensible_cool_capacity",
Expand All @@ -146,7 +143,7 @@ def get_zone_conditioning_category_dict(
hvac_systems_dict[hvac_sys_id]["heating_system"]["design_capacity"]
if assert_(
hvac_systems_dict.get(hvac_sys_id),
f"HVAC system {hvac_sys_id} is missing in the HeatingVentilatingAiConditioningSystems data group.",
f"HVAC system {hvac_sys_id} is missing in the HeatingVentilatingAirConditioningSystems data group.",
)
and find_one(
"$.heating_system.design_capacity", hvac_systems_dict[hvac_sys_id]
Expand All @@ -158,7 +155,7 @@ def get_zone_conditioning_category_dict(
hvac_systems_dict[hvac_sys_id]["preheat_system"]["design_capacity"]
if assert_(
hvac_systems_dict.get(hvac_sys_id),
f"HVAC system {hvac_sys_id} is missing in the HeatingVentilatingAiConditioningSystems data group.",
f"HVAC system {hvac_sys_id} is missing in the HeatingVentilatingAirConditioningSystems data group.",
)
and find_one(
"$.preheat_system.design_capacity", hvac_systems_dict[hvac_sys_id]
Expand Down Expand Up @@ -192,9 +189,11 @@ def get_zone_conditioning_category_dict(
for terminal in find_all("terminals[*]", zone):
# Note: there is only one hvac system even though the field name is plural
# This will change to singular in schema version 0.0.8
hvac_sys_id = terminal[
hvac_sys_id = terminal.get(
"served_by_heating_ventilating_air_conditioning_system"
]
)
if not hvac_sys_id:
continue

# Add cooling and heating capacites for the terminal
zone_capacity["sensible_cooling"] += hvac_cool_capacity_dict.get(
Expand Down
Loading