About Rumoca

Why We Built Rumoca

Rumoca is a modern Modelica compiler and symbolic interoperability platform. Its goal is not only to compile and simulate Modelica models, but to turn real Modelica package trees into high-quality symbolic systems that can be used across modern scientific computing, optimization, machine learning, and code generation workflows.

There is a large ecosystem of useful engineering models already written in Modelica, but many modern workflows live elsewhere — Julia / SciML, Python / JAX / CasADi / PyTorch, embedded and generated-code targets, and browser workflows via WASM.

Rumoca bridges that gap by treating Modelica as a semantic frontend and compiling models into rich intermediate forms suitable for robust simulation, symbolic analysis, optimization and differentiable workflows, multi-backend code generation, and interoperability with downstream tools.

Paper

Rumoca: Towards a Translator from Modelica to Algebraic Modeling Languages.
16th International Modelica & FMI Conference, 2025, Lucerne.

Read the Paper →

Relationship to the Ecosystem

vs existing Modelica compilers: Rumoca emphasizes explicit compiler phases and IR boundaries, strong structural analysis and DAE lowering, backend-neutral code generation, modern tooling and language integrations, and reusable symbolic outputs rather than a single closed execution path.

vs host-language modeling approaches: Rumoca starts from a dedicated declarative modeling language (Modelica) rather than embedding in a general-purpose language, giving it compatibility with actual Modelica packages, stronger frontend semantics, and a better foundation for predictable structural analysis and compilation.

Open Source & Contributing

Rumoca is an open-source project licensed under Apache-2.0, and we actively welcome contributors of all experience levels. Whether you're a seasoned compiler developer, a Modelica user who wants to improve backend support, or a student looking for a meaningful project to get involved with — there's a place for you.

Ways to contribute include adding or improving code generation backends, expanding Modelica language coverage, writing tests and documentation, reporting bugs, and suggesting new features. Check out the open issues for a good starting point, or open a new issue to discuss your idea before diving in.

Contact & Community