How to define an efficiency
relationships between the inputs and outputs of a unit
The image below shows an overview of the possible relationships between the inputs and outputs of a unit.


The key capability requirements are:
- Easily define arbitrary numbers of input and output flows
- Easily create piecewise affine linear relationships between any two flows
- Anything more complicated can be done via user_constraints
unit_flow__unit_flow relationship
(NOTE! The figure uses the old input data structure)
The flow_ratio_equality_coefficient parameter of the unit_flow__unit_flow relationship class allows you to constrain two unit_flow relationships to each other. Ordering of the unit_flow entities in the unit_flow__unit_flow relationship matters:
- node__to_unit ǀ unit__to_node: equivalent to an (incremental) heat rate when the unit is the same in both.Input_flow = flow_ratio_equality_coefficient * output_flow + flow_ratio_equality_online_coefficient * units_on. It can be piecewise linear, used in conjunction with operating_points with monotonically increasing coefficients (not enforced). Used in conjunction with flow_ratio_equality_online_coefficient triggers a fixed flow when the unit is online and flow_ratio_start_flow triggers a flow on a unit start (start fuel consumption).
- unit__to_node ǀ node__to_unit: equivalent to an efficiency when the unit is the same in both.
output_flow= flow_ratio_equality_coefficient *input_flow+ flow_ratio_equality_online_coefficient * units_on. The units online variable coefficient is added with flow_ratio_equality_online_coefficient. - In addition to node__to_unit ǀ unit__to_node and unit__to_node ǀ node__to_unit relationships, you can also define the flow_ratio_equality_coefficient parameter for node__to_unit ǀ node__to_unit and unit__to_node ǀ unit__to_node relationships.
- Furthermore, you can have flow_ratio_less_than_coefficient and flow_ratio_greater_than_coefficient for any two unit_flow entities. For example: flow_ratio_less_than_coefficient for node__to_unit ǀ unit__to_node creates the following constraint:
input_flow < flow_ratio_less_than_coefficient * output_flow + flow_ratio_less_than_online_coefficient * units_on
real world example: Compressed Air Energy Storage
To give a feeling for why these functionalities are useful, consider the following real world example for Compressed Air Energy Storage:
