From the website:<p>> Modelica is a high-level declarative language for describing mathematical behavior. It is typically applied to engineering systems...<p>We use Modelica quite a bit in HVAC industry. In my case (controls engineer), I can request FMUs of various components from systems engineers for optimization work. (Functional Mockup Unit (FMU)[1]: stand-alone binary representing a dynamical system that can be driven by another application). My background is in Reinforcement learning/Model predictive control/python. Having a physics-driven model written in a domain-specific language which I can embed into my python workflow [2] is convenient.<p>I will say, Modelica requires a different perspective from "regular" imperative programming (python/matlab). It is a declarative language: you define equations, variables, constraints for a system, regardless of order. The compiler decides how to run the simulation; which variables to solve first etc.<p>While OpenModelica[3] has come a long way towards making an open source implementation of the language standard, proprietary applications (Dymola) still have an edge in the industry.<p>[1]: <a href="https://fmi-standard.org/" rel="nofollow">https://fmi-standard.org/</a><p>[2]: <a href="https://fmpy.readthedocs.io/en/latest/" rel="nofollow">https://fmpy.readthedocs.io/en/latest/</a><p>[3]: <a href="https://openmodelica.org/" rel="nofollow">https://openmodelica.org/</a>
This is a pretty niche acausal language, and is used extensively in Motorsports (F1, NASCAR) for real-time simulation on the driver simulator.<p>The language spec is open source but there many commercial compilers, Dymola is the most popular.<p>I code in this language extensively and its acausal nature is extremely powerful. It makes your models highly composable, you can basically assemble a mechanical system like a bunch of lego blocks and the equations fall out automatically. You can also easily invert your models.<p>The closest analogy in the programming world is Haskell.
As someone who has no idea what this is about bar the landing page explanation, and isn't in this space -- it would be great if the front page had examples, or links to examples.<p>30 seconds of clicking around and I've failed to find sth compelling.
I don’t know what this is.<p>There’s not a single example on the landing page. There’s not a single example on any of the main links from the landing page.<p>But the landing page does have a merch store so you can buy mugs and hoodies and look at huge company logos of “organizational members”, whatever that is.<p>You made something. Show me what you made. I’m probably not going to spend more than 30 seconds trying to figure it out unless I already know I need it.<p>Why make it so difficult?
I am now using Modelica with OpenModelica at work to describe electromagnetic systems and it is an excellent language and, with OpenModelica, a excellent graphical user environment. Sometimes I think of it like SPICE but for multi-physics systems.<p>The Modelica library is quite mature and complete and the numerical solvers included with OpenModelica robust and performing.<p>It looks me a while to learn it but now it is paying out.<p>In addition the fact that Modelica is a standard implemented by several suppliers with an open source application is also great to avoid vendor lock in so that is a technology on which is safe to invest as an engineer and as a company.
I finished university 4 years ago but just now I am going down the rabbit hole of bond graph modeling and studying directly from the MIT class notes of Henry M. Paynter [1] while simultaneously using Simscape at work for modeling vehicle systems. I understand that bond graphs are the underlying mechanism upon which Modelica and Simscape are built upon(?).<p>Can any expert in this field give me some pointers. My current belief is that understanding the theory of bond graphs will give me intuitive understanding of just about every system I work with in my field.<p>I find that this field is surprisingly niche, as most of my peers have never paid special attention to it, but when I found about it, it seemed to me like a magic bullet for all my problems.<p>[1] <a href="https://dirac.ruc.dk/~heine/paynter/analysis_and_design_of_engineering_systems_henry_m_paynter.pdf" rel="nofollow">https://dirac.ruc.dk/~heine/paynter/analysis_and_design_of_e...</a>
Related:<p><i>All about Modelica: An equation-based language for modeling physical systems</i> - <a href="https://news.ycombinator.com/item?id=23690788">https://news.ycombinator.com/item?id=23690788</a> - June 2020 (44 comments)<p><i>Modelica</i> - <a href="https://news.ycombinator.com/item?id=16013179">https://news.ycombinator.com/item?id=16013179</a> - Dec 2017 (12 comments)
So, IIUC, this is a language to describe, in a rather general manner, a "system", which can either be modeled via differential equations and/or discrete equations (if/then/else).<p>This is very nice, especially if it is general enough.<p>However, what is even more interesting is the general methodology to actually run the time-based simulation of such a system, especially if this allows to describe arbitrarily complex diffeqs (other than brute force monte-carlo style integration/sampling).
Obligatory mention to Openmodelica[1] which is an open source implementation based on the Modelica language. While I haven't used it yet, I was planning on exploring some of the features this holiday.<p>[1] <a href="https://openmodelica.org/" rel="nofollow">https://openmodelica.org/</a>
Switch to <a href="https://insightmaker.com/" rel="nofollow">https://insightmaker.com/</a> if you can. It is FOSS , maintained and used as powerfull but simpeler alternative.
AFAICT the docs don't seem to be directly searchable:<p><a href="https://doc.modelica.org/Modelica%204.0.0/Resources/helpDymola/Modelica_UsersGuide.html#Modelica.UsersGuide" rel="nofollow">https://doc.modelica.org/Modelica%204.0.0/Resources/helpDymo...</a><p>Are NEMA motors modeled? Could one use this to simulate/model a CNC machine?<p>EDIT:<p>Apparently not, given that "NEMA" doesn't show up searching:<p><a href="https://mbe.modelica.university/" rel="nofollow">https://mbe.modelica.university/</a>
The concept of FMUs is pretty interesting if you work in simulation, but I was surprised how <i>terrible</i> the third party support is.<p>There is not a single third party way to generate a Model Exchange FMU for Linux, using anything but the very badly designed C reference FMUs or some commercial project. Even Matlab has poor support for it.
OpenModelica is teetering on the edge of something finally being good enough to replace Simulink without paying $20k+ per user per year.<p>It is, perhaps, only a few toolboxes away (Simulink Test, Simulink Coverage, Simulink Coder).
People seem to be comparing it to Simulink, but to me the language seems to have more in common with matlab / octave's symbolic package / python's sympy.<p>Any idea if that's the case?
Here's a compiler to Python.<p><a href="https://github.com/pymoca/pymoca">https://github.com/pymoca/pymoca</a><p>It targets CasADi (and therefore C) and to a lesser extent, SymPy.
Hey folks!
If you're into trying out bleeding-edge technologies, check out the MARCO compiler. We're focusing on optimizing large-scale systems, and it's already showing significant improvements compared to existing solutions.
That said, we're still in the early stages: language support needs to grow, and for now, there's only a command-line interface. But hey, it's open-source, so contributions, feedback, or feature requests are more than welcome!<p>Here’s the GitHub repo: <a href="https://github.com/marco-compiler/marco">https://github.com/marco-compiler/marco</a><p>And here’s a link to the latest published results: <a href="https://ecp.ep.liu.se/index.php/modelica/article/view/909" rel="nofollow">https://ecp.ep.liu.se/index.php/modelica/article/view/909</a><p>Would love to hear your thoughts or ideas!