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” |