# OpenModelica

OpenModelica is a free and open source environment based on the Modelica modeling language for modeling, simulating, optimizing and analyzing complex dynamic systems. This software is actively developed by Open Source Modelica Consortium, a non-profit, non-governmental organization. The Open Source Modelica Consortium is run as a project of RISE SICS East AB in collaboration with Linköping University.
OpenModelica is used in academic and industrial environments. Industrial applications include the use of OpenModelica along with proprietary software in the fields of power plant optimization, automotive and water treatment.

## Tools and Applications
### OpenModelica Compiler (OMC)

OpenModelica Compiler (OMC) is a Modelica compiler, translating Modelica to C code, with a symbol table containing definitions of classes, functions, and variables. Such definitions can be predefined, user-defined, or obtained from libraries. The compiler also includes a Modelica interpreter for interactive usage and constant expression evaluation. The subsystem also includes facilities for building simulation executables linked with selected numerical ODE or DAE solvers. The OMC is written in MetaModelica, a unified equation-based semantical and mathematical modeling language and is bootstrapped.

### OpenModelica Connection Editor (OMEdit)

OpenModelica Connection Editor is an open source graphical user interface for creating, editing and simulating Modelica models in textual and graphical modes. OMEdit communicates with OMC through an interactive API, requests model information and creates models/connection diagrams based on the Modelica annotations. The implementation is based on C++ and the Qt library.

### OpenModelica Shell (OMShell)

OpenModelica Shell (OMShell) is an interactive command-line interface that parses and interprets commands and Modelica expressions for evaluation, simulation, plotting, etc. The session handler also contains simple history facilities, and completion of file names and certain identifiers in commands.

### OpenModelica Notebook (OMNotebook)

OpenModelica Notebook (OMNotebook), is a light-weight Mathematica-style editor for Modelica that implements interactive WYSIWYG realization of Literate Programming, a form of programming where programs are integrated with documentation in the same document.
OMNotebook is primarily used for teaching and allows to mix hierarchically structured text with cells containing Modelica models and expressions. These can be evaluated, simulated and plotted with the results displayed directly in the OMNotebook.

### OpenModelica Python Interface (OMPython)

OMPython is a Python interface enabling users to access the modeling and simulation capabilities of OpenModelica from Python. It uses CORBA (omniORB) or ZEROMQ to communicate with the OpenModelica scripting API.

### OpenModelica Matlab Interface (OMMatlab)

OMMatlab is a Matlab interface that provides access the modeling and simulation capabilities of OpenModelica from matlab. It uses ZEROMQ to communicate with the OpenModelica compiler API.

### Modelica Development Tooling (MDT)

MDT is an Eclipse plugin that integrates the OpenModelica compiler with Eclipse. It provides an editor for advanced text based model editing with code assistance. MDT interacts with the OpenModelica Compiler through an existing CORBA based API and is used primarily in the development of the OpenModelica compiler.