Opened 6 years ago
Closed 5 years ago
#5171 closed defect (fixed)
EvaluateFunctions.getStatementLHSScalar generates too large lists
Reported by: | Per Östlund | Owned by: | Volker Waurich |
---|---|---|---|
Priority: | high | Milestone: | 1.16.0 |
Component: | Backend | Version: | v1.13.0-dev-nightly |
Keywords: | Cc: | m.thorade@… |
Description
There seems to be some issues with how EvaluateFunctions.getStatementLHSScalar
generates the list of assigned scalars in a statement. This affects the HelmholtzMedia library in particular, for example the model HelmholtzMedia.Examples.ConvergenceTest.SinglePhase_setState_b
(note: only works with -d=newInst
).
SinglePhase_setState_b
uses the function HelmholtzMedia.Interfaces.PartialHelmholtzMedium
which contains two large if-statements. When EvaluateFunctions.evaluateFunctions_updateStatement
processes the second of these if-statements it uses getStatementLHSScalar
to generate a list of outputs (currently EvaluateFunctions.mo:2664):
lhs_expl := List.fold1(statements, getStatementLHSScalar, funcTree, {});
This generates a list of 2,874,978 expressions, which seems a bit excessive. Obviously this causes the compiler to slow to a crawl, and this is just one of many such lists generated by getStatementLHSScalar
. The list of outputs generated seem to be full of gibberish such as f.rt.r.i.liq.s.rd.rt.r.it.liq.d.Tsat.Tsat
, which I assume isn't intended.
(I optimized the code a bit in 765d7e8 since List.unique would otherwise take forever on the large lists generated, but the huge lists generated are still a big issue.)
Change History (4)
comment:1 by , 6 years ago
Cc: | added |
---|
comment:2 by , 6 years ago
comment:3 by , 5 years ago
Since this commit
https://github.com/OpenModelica/OpenModelica/commit/80ac1a491c0b0bc5c15e878636f0f0245295830d
most models are now compiling fine, and most also simulate, some fail during initialization:
https://libraries.openmodelica.org/branches/newInst/HelmholtzMedia/HelmholtzMedia.html
comment:4 by , 5 years ago
Milestone: | Future → 1.16.0 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
I guess we can close this ticket.
Regarding the initialization issues, you may want to wait until #5770 is fixed.
Possibly fixed in 14f391f, we'll see what the outcome of the library testing is. The largest generated list now contains 129 elements, rather than close to 3 million. But instead of running out of time or memory like before the mentioned model now triggers a stack overflow, so there's still some issues when it comes to HelmholtzMedia.