-
Notifications
You must be signed in to change notification settings - Fork 0
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
Data model review and suggestions #6
base: main
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
Schema: | ||
Object Type: "Meta" | ||
References: | ||
- "RSINTEGRATEDWATERHEATER" | ||
# - "RSTANK" # TODO: Add for central water heaters | ||
# - "RSAIRTOWATERHEATPUMP" # TODO: Add for central water heaters | ||
Title: "HPWHsim Input" | ||
Description: "Input required to describe a heat pump water heating system in HPWHsim" | ||
Version: "0.1.0" |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,7 @@ Schema: | |
|
||
RSCONDENSERWATERHEATSOURCE: | ||
Object Type: "Data Group" | ||
Data Group Template: HeatSourceBase | ||
Data Group Template: HeatSourceTemplate | ||
Data Elements: | ||
metadata: | ||
Description: "Metadata data group" | ||
|
@@ -59,47 +59,71 @@ Performance: | |
Description: "Coil configuration" | ||
Data Type: "{CoilConfiguration}" | ||
Required: True | ||
use_defrost_map: | ||
maximum_refrigerant_temperature: # Was maximum_setpoint in HeatSourceConfiguration | ||
Description: "Maximum temperature of the refrigerant entering the condenser" | ||
Data Type: Numeric | ||
Units: "K" | ||
maximum_temperature: # Was maximum_temperature in HeatSourceConfiguration. # TODO: Remove and use performance map maximum grid temperature | ||
Description: "Maximum external temperature" | ||
Data Type: Numeric | ||
Units: "K" | ||
Required: False | ||
minimum_temperature: # Was minimum_temperature in HeatSourceConfiguration. # TODO: Remove and use performance map minimum grid temperature | ||
Description: "Minimum external temperature" | ||
Data Type: Numeric | ||
Units: "K" | ||
Required: False | ||
compressor_lockout_temperature_hysteresis: # Was hysteresis_temperature_difference in HeatSourceConfiguration | ||
Description: "Hysteresis for compressor lockout" | ||
Data Type: Numeric | ||
Units: "K" | ||
Required: False | ||
Notes: | ||
- "Compressor locks out when the evaporator environment temperature drops this much below the minimum operating temperature, and unlocks when the temperature rises this much above the minimum operating temperature" | ||
- "Compressor locks out when the evaporator environment temperature rises this much above the maximum operating temperature, and unlocks when the temperature drops this much below the maximum operating temperature" | ||
use_defrost_map: # TODO: Remove and add defrost de-rating into performance map | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can be done after discussions with standards committee. |
||
Description: "Use defrost map" | ||
Data Type: Boolean | ||
Required: False | ||
|
||
PerformanceMap: | ||
Object Type: "Data Group" | ||
Data Elements: | ||
grid_variables: | ||
Description: "Collection of values affecting performance." | ||
Description: "Data group defining the grid variables for heating performance" | ||
Data Type: "{GridVariables}" | ||
Required: True | ||
lookup_variables: | ||
Description: "Collection of performance metrics." | ||
Description: "Data group defining the lookup variables for heating performance" | ||
Data Type: "{LookupVariables}" | ||
Required: True | ||
|
||
GridVariables: | ||
Object Type: "Data Group" | ||
Data Elements: | ||
evaporator_environment_temperature: | ||
Description: "Evaporator environment temperatures (Nevap values)" | ||
evaporator_environment_dry_bulb_temperature: | ||
Description: "Dry bulb temperature of the air entering the evaporator coil" | ||
Data Type: "[Numeric]" | ||
Units: "K" | ||
Required: True | ||
heat_source_temperature: | ||
Description: "Temperature of heat sources (Nsrc values)" | ||
Description: "Average water temperature at the heat source" | ||
Data Type: "[Numeric]" | ||
Units: "K" | ||
Required: True | ||
Notes: | ||
- "Water temperature may be vertically stratified across the heat source" | ||
- "The average water temperature may be weighted according to how heat is distributed to the water from the heat source" | ||
|
||
LookupVariables: | ||
Object Type: "Data Group" | ||
Data Elements: | ||
input_power: | ||
Description: "Input power (Nevap x Nsrc values)" | ||
Description: "Power draw from the compressor, evaporator fan, and any auxiliary power used by the units controls" | ||
Data Type: "[Numeric]" | ||
Units: "W" | ||
Required: True | ||
cop: | ||
Description: "Coefficient of performance (Nevap x Nsrc values)" | ||
heating_capacity: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Priority one (convert COP to capacity) |
||
Description: "Total heat added by the condenser to the adjacent water" | ||
Data Type: "[Numeric]" | ||
Units: "-" | ||
Required: True | ||
|
@@ -113,6 +137,6 @@ CoilConfiguration: | |
WRAPPED: | ||
Description: "Coil is wrapped around the tank interior" | ||
Display Text: "Wrapped" | ||
EXTERNAL: | ||
EXTERNAL: # TODO: Remove after we have the air-to-water heat pump RS | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lower priority (along with air to water heat pump) |
||
Description: "Coil is external to the tank" | ||
Display Text: "External" |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,10 +24,6 @@ RSINTEGRATEDWATERHEATER: | |
Description: "Data group containing performance information" | ||
Data Type: "{Performance}" | ||
Required: True | ||
standby_power: | ||
Description: "Power drawn when system is in standby mode" | ||
Data Type: "Numeric" | ||
Constrains: "> 0" | ||
|
||
Description: | ||
Object Type: "Data Group" | ||
|
@@ -78,6 +74,10 @@ HeatSourceType: | |
HeatSourceConfiguration: | ||
Object Type: "Data Group" | ||
Data Elements: | ||
id: | ||
Description: "Identifier for reference" | ||
Data Type: "String" | ||
Required: True | ||
heat_source_type: | ||
Description: "Type of heat source" | ||
Data Type: "{HeatSourceType}" | ||
|
@@ -88,94 +88,64 @@ HeatSourceConfiguration: | |
Data Type: "({RSRESISTANCEWATERHEATSOURCE},{RSCONDENSERWATERHEATSOURCE})" | ||
Constraints: "heat_source_type(RESISTANCE, CONDENSER)" | ||
Required: True | ||
label: | ||
Description: "Identifier for reference" | ||
Data Type: "String" | ||
Required: True | ||
heat_distribution: | ||
Description: "Weighted distribution of heat by division, in order" | ||
Data Type: "[Numeric]" | ||
Description: "Weighted distribution of heat from the heat source along the height of the tank" | ||
Data Type: "{WeightedDistribution}" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lower priority. Needs more design/discussion? |
||
Required: True | ||
turn_on_logic: | ||
Description: "" | ||
Description: "An array of logic conditions that define when the heat source turns on if it is currently off" | ||
Data Type: "[{HeatingLogic}]" | ||
Required: True | ||
shut_off_logic: | ||
Description: "" | ||
Description: "An array of logic conditions that define when the heat source shuts off if it is currently on" | ||
Data Type: "[{HeatingLogic}]" | ||
Required: False | ||
standby_logic: | ||
standby_logic: # TODO: Is this needed? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lower priority. Needs to be researched to understand what it is intended to represent. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If turn-on condition true, and standbyLogic exists, defers to standbyLogic to engage. If turn-on condition true, and no standbyLogic exists, engages, equivalent to top-node turn-on logic (perviously undefined). However, no IHPWH models have defined standbyLogic; this feature is only used by Sanco models. Other instances may have been coding remnants and are now replaced. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Might be worth asking Ben if this is something that we need to keep moving forward, or if there is a simpler way to get the same outcome. |
||
Description: "Checks that bottom is below a temperature to prevent short cycling" | ||
Data Type: "{HeatingLogic}" | ||
Required: False | ||
maximum_setpoint: | ||
Description: "Maximum setpoint temperature" | ||
Data Type: Numeric | ||
Units: "K" | ||
Required: False | ||
maximum_temperature: | ||
Description: "Maximum external temperature" | ||
Data Type: Numeric | ||
Units: "K" | ||
Required: False | ||
minimum_temperature: | ||
Description: "Minimum external temperature" | ||
Data Type: Numeric | ||
Units: "K" | ||
Required: False | ||
hysteresis_temperature_difference: | ||
Description: "Hysteresis temperature difference for activation" | ||
Data Type: Numeric | ||
Units: "K" | ||
Required: False | ||
is_vip: | ||
is_vip: # TODO: We need to come up with a better name. Since there can only be one "VIP", we should maybe just reference it at the Performance data group | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Priority 1. |
||
Description: "Turns on independently of other heat sources" | ||
Data Type: Boolean | ||
Required: False | ||
depresses_temperature: | ||
depresses_temperature: # TODO: Move to HPWHsimInput schema | ||
Description: "Depresses space temperature when activated" | ||
Data Type: Boolean | ||
Required: False | ||
backup_heat_source_label: | ||
Description: "Identifier of backup heat source" | ||
Data Type: "String" | ||
Required: False | ||
followed_by_heat_source_label: | ||
Description: "Identifier of heat source that follows" | ||
Data Type: "String" | ||
Required: False | ||
companion_heat_source_label: | ||
Description: "Identifier of companion heat source" | ||
Data Type: "String" | ||
Required: False | ||
backup_heat_source: | ||
Description: "Reference to the `HeatSourceConfiguration` that engages if this one cannot meet the setpoint" | ||
Data Type: "String" # TODO: Make an actual reference type (need to use 232 compliant Lattice) | ||
followed_by_heat_source: | ||
Description: "Reference to the `HeatSourceConfiguration` that should always engage after this one" | ||
Data Type: "String" # TODO: Make an actual reference type (need to use 232 compliant Lattice) | ||
companion_heat_source: | ||
Description: "Reference to the `HeatSourceConfiguration` that should always engage concurrently with this one" | ||
Data Type: "String" # TODO: Make an actual reference type (need to use 232 compliant Lattice) | ||
|
||
HeatSourceCoilConfiguration: | ||
Object Type: "Enumeration" | ||
Enumerators: | ||
SUBMERGED: | ||
Description: "Heat sources with submerged coil configuration" | ||
Display Text: "Submerged" | ||
Notes: "" | ||
WRAPPED: | ||
Description: "Heat sources with wrapped coil configuration" | ||
Display Text: "Wrapped" | ||
Notes: "" | ||
EXTERNAL: | ||
Description: "Heat sources with external coil configuration" | ||
Display Text: "External" | ||
Notes: "" | ||
WeightedDistribution: | ||
Object Type: "Data Group" | ||
Data Elements: | ||
normalized_height: | ||
Description: "Normalized heights within the tank where the weight is defined between the bottom (0.0), and the top (1.0)" | ||
Data Type: "[Numeric]" | ||
Units: "-" | ||
Constraints: | ||
- ">= 0.0" | ||
- "<= 1.0" | ||
Required: True | ||
weight: | ||
Description: "Fraction of weight at the corresponding normalized height" | ||
Data Type: "[Numeric]" | ||
Units: "-" | ||
Constraints: | ||
- ">= 0.0" | ||
- "<= 1.0" | ||
Required: True | ||
Comment on lines
+122
to
+140
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lower priority. |
||
|
||
HeatingLogicType: | ||
Object Type: "Enumeration" | ||
Enumerators: | ||
SOC_BASED: | ||
STATE_OF_CHARGE_BASED: | ||
Description: "State-of-charge based" | ||
Display Text: "SoC based" | ||
Notes: "" | ||
TEMP_BASED: | ||
TEMPERATURE_BASED: | ||
Description: "Temperature based" | ||
Display Text: "Temp based" | ||
Notes: "" | ||
|
||
HeatingLogic: | ||
Object Type: "Data Group" | ||
|
@@ -187,8 +157,8 @@ HeatingLogic: | |
Notes: "Determines which heating-logic data group is used for `heating_logic`" | ||
heating_logic: | ||
Description: "Specific heating logic" | ||
Data Type: "({SoCBasedHeatingLogic},{TempBasedHeatingLogic})" | ||
Constraints: "heating_logic_type(SOC_BASED, TEMP_BASED)" | ||
Data Type: "({StateOfChargeBasedHeatingLogic},{TemperatureBasedHeatingLogic})" | ||
Constraints: "heating_logic_type(STATE_OF_CHARGE_BASED, TEMPERATURE_BASED)" | ||
Required: True | ||
comparison_type: | ||
Description: "Result of comparison for activation" | ||
|
@@ -205,30 +175,30 @@ ComparisonType: | |
Description: "Decision value is less than reference value" | ||
Display Text: "Less than" | ||
|
||
TempBasedHeatingLogic: | ||
TemperatureBasedHeatingLogic: | ||
Object Type: "Data Group" | ||
Data Group Template: HeatingLogicBase | ||
Data Group Template: HeatingLogicTemplate | ||
Data Elements: | ||
absolute_temperature: | ||
Constraints: ">=0.0" | ||
Data Type: Numeric | ||
Description: "Absolute temperature for activation" | ||
Data Type: Numeric | ||
Units: "K" | ||
Constraints: ">=0.0" | ||
Required: "if !differential_temperature" | ||
differential_temperature: | ||
Description: "Temperature difference for activation" | ||
Constraints: ">=0.0" | ||
Data Type: Numeric | ||
Units: "K" | ||
Constraints: ">=0.0" | ||
Required: "if !absolute_temperature" | ||
logic_distribution: | ||
temperature_weight_distribution: | ||
Description: "Weighted distribution for comparison, by division, in order" | ||
Data Type: "[Numeric]" | ||
Data Type: "{WeightedDistribution}" | ||
Required: True | ||
|
||
SoCBasedHeatingLogic: | ||
StateOfChargeBasedHeatingLogic: # This probably needs some re-design to make it meaningful to a manufacturer | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Re-design is lower priority. |
||
Object Type: "Data Group" | ||
Data Group Template: HeatingLogicBase | ||
Data Group Template: HeatingLogicTemplate | ||
Data Elements: | ||
decision_point: | ||
Description: "Decision point" | ||
|
@@ -238,14 +208,13 @@ SoCBasedHeatingLogic: | |
minimum_useful_temperature: | ||
Description: "Minimum useful temperature" | ||
Data Type: Numeric | ||
Required: False | ||
Notes: "Determines which heating-logic data group is used for `heating_logic`" | ||
hysteresis_fraction: | ||
Description: "Hysteresis fraction" | ||
Data Type: Numeric | ||
Units: "-" | ||
Range: ">= 0, <= 1" | ||
Required: False | ||
Constraints: | ||
- ">= 0.0" | ||
- "<= 1.0" | ||
uses_constant_mains: | ||
Description: "Uses constant mains" | ||
Data Type: Boolean | ||
|
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.
Priority 1.