Tools and Methods for Analysis, Debugging, and Performance Improvement of Equation-Based Models
Martin Sjölund · Linköping studies in science and technology. Dissertations · 2015
Equation-based object-oriented (EOO) modeling languages such as Modelica provide a convenient, declarative method for describing models of cyber-physical systems.Because of the ease of use of EOO languages, large and complex models can be built with limited effort.However, current state-of-the-art tools do not provide the user with enough information when errors appear or simulation results are wrong.It is of paramount importance that such tools should give the user enough information to correct errors or understand where the problems that lead to wrong simulation results are located.However, understanding the model translation process of an EOO compiler is a daunting task that not only requires knowledge of the numerical algorithms that the tool executes during simulation, but also the complex symbolic transformations being performed.As part of this work, methods have been developed and explored where the EOO tool, an enhanced Modelica compiler, records the transformations during the translation process in order to provide better diagnostics, explanations, and analysis.This information is used to generate better error-messages during translation.It is also used to provide better debugging for a simulation that produces unexpected results or where numerical methods fail.Meeting deadlines is particularly important for real-time applications.It is usually essential to identify possible bottlenecks and either simplify the model or give hints to the compiler that enable it to generate faster code.When profiling and measuring execution times of parts of the model the recorded information can also be used to find out why a particular system model executes slowly.Combined with debugging information, it is possible to find out why this system of equations is slow to solve, which helps understanding what can be done to simplify the model.A tool with a graphical user interface has been developed to make debugging and Populärvetenskaplig sammanfattningSom ingenjör lär man sig att förstå världen genom ekvationer.För att beskriva eller modellera ett fysikaliskt system, till exempel vid utveckling av en produkt, vill ingenjören använda sig av de ekvationer som han eller hon lärt sig från böcker eller föreläsningar.Vid produktutveckling kan ett av målen med modellen vara att hitta de bästa parametrarna för att få den snabbaste, mest hållfasta eller billigaste lösningen.Man vill således använda en dator för att göra en simulering av modellen, men de instruktioner en dator tar körs i sekvens och gör i grund och botten bara en massa beräkningar och tilldelningar till olika minnespositioner.De klassiska programmeringsparadigmerna, exempelvis imperativ programmering, fungerar på liknande sättman skriver en algoritm som körs på uppifrån och ner.Den här avhandlingen fokuserar på ekvationsbaserade programmeringsspråk.I ekvationsbaserade programmeringsspråk, till exempel Modelica, översätts ekvationer till imperativ kod, som lätt kan översättas till maskinkod.Detta gör alltså att en ingenjör som är duktig på modellering och ekvationer kan simulera sina modeller på ett effektivt sätt utan att vara datavetare och ha en djup kunskap om programmering.Problemet är att man vid översättning från ekvationer till maskinkod tappar en massa användbar information.Om ett fel inträffar vid simulering av modellen så vill man få reda på var felet kommer ifrån.Tidigare har detta varit inte varit möjligt, men i avhandlingen introduceras en metod som sparar tillräckligt med information för att visa vilken ekvation felet inträffade i och alla de symboliska operationer som utförts på ekvationen.Informationen kan sedan visas i en grafisk debugger.För att kunna simulera i realtid, till exempel en körsimulator där Thank you everyone who helped make this thesis come true.The list of everyone involved would be very long indeed.Without my supervisor, Peter Fritzson, this thesis would never have seen the light of day.Peter not only guided me to some interesting topics of research, he also obtained the funding and managed those projects.Most of my travels resulted in something useful, rather than sitting through meaningless meetings.This meant I had time to work on projects I enjoy, although some of this took place during the slower parts of meetings.Thanks to all my former and present colleagues at IDA. Especially to PELAB for being there during all those coffee breaks.Relaxing a few minutes a day makes all the difference in the world.I would like to thank everyone who contributed to the OpenModelica project.I would like to especially thank the people providing bug fixes and improved the parts of the OpenModelica kernel I most often use: Adrian Pop, Per Östlund, Jens