Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ Production Accounting

Choice of variables in smart constraint formulas

  • Last UpdatedFeb 28, 2025
  • 4 minute read

It is important to make the right choice of properties to use as inputs to Smart Constraint formulas. Smart Constraints work as intended when you supply reconciled stream quantities as the inputs, because it allows those streams to be further reconciled, not just with the overall material balance, but also with the specific constraint.

A common error is to attempt to use the properties of nodes or processes, such as the rundown stream value, as the input to a Smart Constraint. The rundown of a node is a derived value and cannot be reconciled to match the constraint. Another common error is to use the properties of a logical stream, which cannot be reconciled to fit the constraint. An illustration of both of these common errors follows.

Use the rundown value of a node as input to a constraint

You may be tempted to use a node or process property as input to a smart constraint, but we shall illustrate why this is not recommended.

Assume that you change the constraint formula to use Node(NO2;RecMassRunrate) instead of Stream(FL2;RecMassFlowrate) on the original flow sheet . Runrate is the sum of the rates of all the rundown streams emanating from the node.

The formula for the SC1 Smart Constraint becomes:

Stream(FL1;RecMassFlowrate)-2*Node(NO2;RecMassRunrate) = 0

…where Node(NO2;RecMassRunrate) is not a variable but is calculated as 44.917.

Internally, when running data reconciliation, this Smart Constraint formula will be interpreted as follows:

Stream(FL1;RecMassFlowrate)-2*44.917 = 0

Note that the value 44.917 is not truly variable because it is derived from other values.

Because the value 44.917 cannot be adjusted, to satisfy this constraint, AVEVA Production Accounting will be forced to reiterate its reconciliation algorithm and adjust other values. That is, in order to find the set of values under which the smart constraint’s reconciled imbalance converges on zero, the reconciliation will be iteratively run many times (automatically).

The constraint will, with enough iteration, reach a point where the constraint is satisfied, but you will notice that the solution is different than the solution that resulted when we used stream reconciled values as input (Figure: Balance with Smart Constraint satisfied).

Initially, the raw imbalance of the SC1 smart constraint is:

measured value (100) of FL1 stream variable – 2*44.917 = 10.146

The reconciled imbalance is then:

reconciled value (95.491) of FL1 stream variable – 2*44.917 = 5.637

Figure 33: Initial calculation using a node's rundown values as input to Smart Constraint

AVEVA Production Accounting reruns data reconciliation with this changed constraint and the FL1 stream is reconciled to meet this constraint as 2*44.917 (=89.854).

Figure: Result of second iteration of reconciliation

The value of the Node(NO2;RecMassRunrate) term is also changed as the reconciled value of FL5 and FL6 streams are changed. As data reconciliation is run repeatedly, results emerge that are different from those achieved by the recommended method, shown in Figure 27.

Finally the smart constraint’s result converges to 0 after enough executions of data reconciliation.

Twenty executions are required to cause the smart constraint’s result to converge to 0. The final results are quite different from the original constraint results.

Figure: Results after 20 iterations of reconciliation algorithm

Use logical streams in smart constraint formulas

You may be tempted to use the properties of a logical stream as input to a constraint, but we shall illustrate why this is not recommended. The results end up different from the optimal results obtained in Figure 27.

Let us assume that you add the logical stream LOGICAL_FL1 to summarize the FL5 and FL6 streams.

The default flow rate equation of LOGICAL_FL1 stream is:

Stream(FL5;MassFlowrate)+Stream(FL6;MassFlowrate)

The existence of the logical stream allows you to change the constraint formula to use:

Stream(LOGICAL_FL1;RecMassFlowrate)

instead of:

Node(NO2;RecMassRunrate)

This makes the formula for the SC1 smart constraint:

Stream(FL1;RecMassFlowrate)-2* Stream(LOGICAL_FL1;RecMassFlowrate)= 0

…where (LOGICAL_FL1;RecMassFlowrate) is not a variable since the LOGICAL_FL1 stream is logical stream. The calculated value is 44.917 (as in the previous example).

The results will be the same as in the case discussed above, in which node properties were used. In the following figure, we see the results after the second iteration.

Figure: Second iteration of reconciliation when using a Logical Stream as input to a Smart Constraint

In This Topic
Related Links
TitleResults for “How to create a CRG?”Also Available in