Hopsan. Hopsan is a free simulation environment for fluid and mechatronic systems, developed at Linköping University. Although originally developed for simulation of fluid power systems, it has also been adopted for other domains such as electric power, flight dynamics, and vehicle dynamics. It uses bi-directional delay lines (or transmission line elements) to connect different components.

History
The development on Hopsan first began in 1977 at the Division of Hydraulics and Pneumatics at Linköping University. The first version was written in FORTRAN, with a drag-and-drop graphical user interface written in Visual Basic. In addition to the simulation capability it also had features for simulation based optimization. This used the COMPLEX direct search optimization method or a generic algorithm (GA). It also had features for frequency analysis and transfer function analysis, on simulated results. It also supported co-simulation under Simulink. Component models were written as FORTRAN subroutines. A separate tool called COMPGEN, written in Mathematica, was also developed, which can be used to generate component models in a more straightforward way. In 1991 the method of bi-directional delay lines (or transmission line modelling TLM) was introduced for system simulation.

In 2009 the development of the first version of Hopsan was dropped in favor for a brand new generation of the software, written in C++. This working name of the project is Hopsan NG, and the first beta version was released in February 2011. Parts of the source code in Hopsan was used in the OpenModelica Connection Editor (OMEdit) in a collaboration with the OpenModelica project.

Program Overview
The current generation of Hopsan consists of two parts, a graphical user interface and a simulation core library. These are completely separated, so that the core can be used stand-alone, for example in embedded systems or target computers. System models are built using components from the built-in or external libraries. This includes components for hydraulic, pneumatic, electrical, mechanical and control systems (filters, non-linear functions and arithmetic). The library components are pre-compiled, so that no compilation is required during runtime. Custom user models can be created and compiled as separate library files, which can be loaded into Hopsan. There is also a built-in automated equation based component generator using Modelica syntax. Models can also be generated from equations by using Mathematica. Numerical optimization can be performed by a built-in tool, using COMPLEX-RF, COMPLEX-RFP or particle swarm algorithms. It is also possible to perform Monte Carlo sensitivity analysis. The plotting tool is capable of generating frequency spectrums and performing frequency analysis to generate Bode diagrams and Nyquist plots.

Hopsan models can be exported to Simulink. Plot data can be exported to XML, CSV, gnuplot and Matlab. Experiments with including the Hopsan simulation core to LabVIEW Simulation Interface Toolkit by using a wrapper library have been successful. Support for model exchange, both import and export, by using the Functional Mock-up Interface is currently being implemented.

Hopsan is a cross-platform project, with the intention of running on Windows, Unix and Macintosh systems. The current beta release is only available for Windows and Linux, but the intention is to create versions for the other systems as well. The transmission line element method is very suitable for parallel execution, due to physically motivated time delays between certain components. Hopsan has support for dividing simulations in separate threads, making it possible to take advantage of multicore processors.

Features in the graphical user interface include Python scripting, an undo/redo function, XML-based model and configuration files, hydraulic symbols according to the ISO 1219-1 standard and global system parameters that can be shared between components.

References

External links
GitHub repository

Fortran software
C++ software
Simulation software