Opened 8 years ago
Closed 5 years ago
#4273 closed enhancement (fixed)
FMU for co-simulation , Available Solvers
Reported by: | Robert Hällqvist | Owned by: | Andreas Heuermann |
---|---|---|---|
Priority: | blocker | Milestone: | 1.16.0 |
Component: | FMI | Version: | v1.12.0 |
Keywords: | Solvers, CVODE, FMU export | Cc: | Adrian Pop, Adeel Asghar, Niklas Worschech, Karim Adbdelhak |
Description
As far as I understand, Euler forward is the only solver currently available when exporting FMUs for co-simulation from OpenModelica. Many of my models do not simulate with this solver. It would be very beneficial if an FMU for co-simulation could be exported with any of the solvers available for simulation in OpenModelica, that way each FMU could utilize the solver kept in mind when developing the model.
Also, having the sundials solver CVODE available both for simulation in OpenModelica as well as for FMU-CS export would be very beneficial. This particular solver is available in Dymola. If it is made available in OpenModelica, then the user will be free to simulate and export Dymola models using CVODE in/from OpenModelica.
Change History (10)
comment:1 by , 7 years ago
comment:3 by , 6 years ago
What is the cause of this limitation to Euler? Is there any documentation about that?
Thanks, Torsten
follow-up: 5 comment:4 by , 6 years ago
Cc: | added |
---|
I guess it is only lack of development resources.
Niklas Worschech @niklwors and Willi Braun @wbraun are working on a long-term plan to unify the C runtime, C++ runtime and FMU runtime, they may comment on this topic.
comment:5 by , 6 years ago
Replying to casella:
I guess it is only lack of development resources.
Niklas Worschech @niklwors and Willi Braun @wbraun are working on a long-term plan to unify the C runtime, C++ runtime and FMU runtime, they may comment on this topic.
At the moment we are working on to support FMI 2.0 ME in the new OMSI runtimes. But it is also planted to support FMI 2.0 CS later. Then we will also support the sundials ODE solvers.
comment:6 by , 5 years ago
Milestone: | Future → 1.16.0 |
---|---|
Status: | new → accepted |
We are planing to include CVODE for co-simulation fmus in OpenModelica v1.16.0.
comment:7 by , 5 years ago
Owner: | changed from | to
---|---|
Status: | accepted → assigned |
comment:8 by , 5 years ago
Cc: | added; removed |
---|
Added CVODE to C runtime (see #5830) and started improving robustness (see #5997).
Started compiling CVODE into FMUs (C target code, FMI 2.0 for CoSimulation) and to use as much as possible of the C-runtime implementation from cvode_solver.c.
To switch between different solvers in a FMU we added an optional JSON file with simulation flags:
<fmu_prefix>.fmu/resources/<fmu_prefix>_flags.json
:
{ "s" : "cvode", "nls" : "homotopy" }
See PR#897 for the current status of flags in FMUs and CVODE inside an CS FMU.
At the moment first examples are compiling with CVODE, allocating and freeing CVODE data works as well.
Next the fmi2DoStep function gets an upgrade to do an integration step with CVODE.
comment:9 by , 5 years ago
Simple dynamic linked FMUs with SUNDIALS/CVODE are working fine on Linux.
Models with events not tested yet. CVODE is not allowed to stop on an event in that case, because the CS Simulator will handle events.
Static linked FMUs are a remaining problem and I'm working on it right now.
When those are fixed FMUs with CVODE on Windows should be possible as well.
Remaining problems:
- Compile FMU with static linking.
- CVODE needs to disable root function finding on FMI target.
- CVODE stuff doesn't use correct logging with
fmi2CallbackFunctions->logger
. - CVODE stuff doesn't use
fmi2CallbackFunctions->allocateMemory
andfmi2CallbackFunctions->freeMemory
.
comment:10 by , 5 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Added CVODE to FMU CS export with commit 1014b60.
Dokumentation and improvements are coming with PR #949.
Indeed it would be super to be able to do that. Perhaps this could be contributed to OpenModelica FMU Exporter. Any advice on how to proceed?