NREL / SOEP-QSS-Test

0 stars 1 forks source link

Reverse dependencies improvements #10

Open chria opened 3 years ago

chria commented 3 years ago

Event indicators with reverse dependencies on derivatives when the effect is actually to modify the variable. This can cause extra QSS work and prevents QSS from exploiting information about whether the change is to a derivative or value for efficiency in the future.

BouncingBall: has reverse dependencies on der(v) and der(h) when a single reverse dependency on v would suffice EventIndicator2: the event indicator has a reverse dependency is on der(x) but it would be more accurate if it were on x since the action of the when clause is reinit(x,1)

Some models have a number of event indicators with no reverse dependencies. If these are not relevant to states/simulation they could be omitted. Otherwise, it is worth checking that needed reverse dependencies aren't missing due to variable "short-circuiting".

Case600 Case600FF SimpleHouseDiscreteTime TwoFloor_TwoZone A number of others...

DeadParrot commented 3 years ago

Versions

The issue was observed with these component versions (may occur with others):

Component Version Date
OCT OCT-r23206_JM-r14295 2021/05
Buildings 9c37781 2021/05/04
QSS e4a0f62 2021/06/08

Build

Build the FMU with bld from the OCT directory as described in the Status page.

The dependencies can be examined in the modelDescription.xml file.

DeadParrot commented 3 years ago

In the ACControl10 model all the event indicators have the same 10 reverse dependencies on the derivatives of all 10 elements of the th[] temperature vector. The 20 event indicators for the temperature-triggered AC on/off when statements should each have a reverse dependency on only its own der(th[i]) since it alters the on[i] vector element:

  der(th[i]) = ( THA - th[i] ) / ( RES[i] * CAP[i] ) - ( POT[i] * on[i] ) / CAP[i];

The unnecessary reverse dependencies are a performance/scalability problem.

DeadParrot commented 2 years ago

Parts of this issue may be solved by the use of the new OCT option that adds a <Dependencies> annotation section to the modelDescription.xml and it will be updated as testing progresses with the new OCT and related QSS update.

DeadParrot commented 2 years ago

With the OCT dev build OCT-dev-cw-5212-18478f3488ff1272c52222a29d72215983eadeec QSS is using the new <Dependencies> section for dependencies and the BouncingBall and EventIndicator2 "reverse" dependencies are as preferred.

Until other specific "reverse" dependency issues are identified I am moving this to the Future Milestone.