# ContinuousControl

The `ContinuousControl`

node allows for fine control of a controllable property of a connector node, which is updated at each time step. This control can be set up as follows:

- Define a compound variable. This is a linear combination of variables in the model the
`ContinuousControl`

node can listen to, i.e. flows and levels.; - Define a piecewise linear function by providing datapoints which get interpolated. The controlled parameter is then set to the outcome of this function given the value of the compound variable.

Having `ContinuousControl`

nodes depend on eachother or `PidControl`

nodes does *not* work. For instance, if one `ContinuousControl`

node sets the flow rate of a pump, this flow rate cannot be used as the input of another `ContinuousControl`

node. This will not throw an error but will produce incorrect results.

# 1 Tables

## 1.1 Variable

The compound variable schema defines linear combinations of variables which can be used in conditions. This means that this schema defines new variables with the given `compound_variable_id`

that look like \[
\text{weight}_1 * \text{variable}_1 + \text{weight}_2 * \text{variable}_2 + \ldots,
\]

which can be for instance an average or a difference of variables. If a variable comes from a timeseries, a look ahead \(\Delta t\) can be supplied. There is only one compound variable per `ContinuousControl`

node.

column | type | unit | restriction |
---|---|---|---|

node_id | Int32 | - | sorted |

listen_node_type | String | - | known node type |

listen_node_id | Int32 | - | sorted per node_id |

variable | String | - | must be “level” or “flow_rate”, sorted per listen_node_id |

weight | Float64 | - | (optional, default 1.0) |

look_ahead | Float64 | \(\text{s}\) | Only on transient boundary conditions, non-negative (optional, default 0.0). |

## 1.2 Function

The function table defines a piecewise linear function \(f\) interpolating between `(input, output)`

datapoints for each `ContinuousControl`

node. The total computation thus looks like

\[ f(\text{weight}_1 * \text{variable}_1 + \text{weight}_2 * \text{variable}_2 + \ldots). \]

column | type | unit | restriction |
---|---|---|---|

node_id | Int32 | - | sorted |

input | Float64 | - | sorted per node_id |

output | Float64 | - | - |

controlled_variable | String | - | must be “level” or “flow_rate” |