Closed Mathadon closed 8 years ago
The reason is the following. Before:
Sizes of linear systems of equations: {63, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2}
Sizes after manipulation of the linear systems: {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Sizes of nonlinear systems of equations: {1, 12, 10}
Sizes after manipulation of the nonlinear systems: {0, 2, 4}
After:
Sizes of linear systems of equations: {39, 2, 3, 3, 3, 3, 3}
Sizes after manipulation of the linear systems: {0, 0, 0, 0, 0, 0, 0}
Sizes of nonlinear systems of equations: {1, 12, 10}
Sizes after manipulation of the nonlinear systems: {0, 2, 4}
Dymola does not like large linear systems..
@Mathadon How do the unittests behave with states on the surfaces ? Btw, the sizes after manipulation are exactly equal, so are you sure this has anything to do with it ?
It has a lot to do with it :)
Unit tests produce similar results.
Why did you close this @Mathadon ?
I figured it could be closed since the branch is merged, no?
Ah, ik had het gemerged naar een 'trial' branch, nog niet in develop ... not convinced yet.
@mathadon need to give some good examples
For IDEAS.Buildings.Validation.Tests.Case920
I get:
Sizes of linear systems of equations: {4, 2, 2, 4, 63, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2}
Sizes after manipulation of the linear systems: {0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}
cputime = 30.4s
Sizes of linear systems of equations: {4, 43, 2}
Sizes after manipulation of the linear systems: {0, 10, 2}
Cputime = 20.2 s
Sizes of linear systems of equations: {4, 2, 2, 4, 63, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2}
Sizes after manipulation of the linear systems: {0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
cputime = 20s
Sizes of linear systems of equations: {4, 43}
Sizes after manipulation of the linear systems: {0, 0}
cputime = 13 s
In both cases the size and number of linear systems is significantly reduced, which leads to significant speed improvements.
Simulations were using:
simulateModel("IDEAS.Buildings.Validation.Tests.Case920", stopTime=3.1536e+07, numberOfIntervals=0, outputInterval=3600, method="dassl", resultFile="Case920");
@rubenbaetens can you give feedback?
Unit tests give very similar results, although not exactly the same of course.
@Mathadon what exactly causes the difference in set of equations between Evaluate=true
and Evaluate=false
?
When Evaluate=true Dymola will assume that all parameter values are fixed. This allows more symbolic manipulation since dymola may for instance know that a certain parameter will never be zero, so it can safely divide by this parameter, which may otherwise lead to a division by zero.
I meant, which each is the main evaluation here that causes this ? E.g. that the number of states is always fixed and can't be changed ?
I'm not sure what you mean.
The number of states will indeed not change due to Evaluate=true or false.
Solved in #372.
I changed the implementation of IDEAS.Buildings.Components.BaseClasses.MonoLayerOpaqueNf so that layer surfaces contain a state (instead of a resistance). This reduced the simulation time of
IDEAS.Buildings.Validation.Tests.Case600
from 85s to 60s. Depending on the case I think that the gain can be larger. We will need to look further into this.