DAE Tools Project

DAE Tools is a free/open-source cross-platform object- and equation-oriented process modelling and optimization software. It is not a modelling language, rather a collection of software packages with the API for:

  • Model development
  • Simulation, optimization, and parameter estimation
  • Processing of the results (plotting and exporting to various file formats)
  • Report generation
  • Code generation and model exchange

DAE Tools runs on all major operating systems (Windows, GNU Linux and Mac OS X) and architectures (x86, x86_64, arm).

It is free to use, since it is free software and released under the GNU General Public Licence.

DAE Tools is initially developed to model and simulate processes in chemical process industry (mass, heat and momentum transfers, chemical reactions, separation processes, thermodynamics). However, DAE Tools can be used to develop high-accuracy models of (in general) many different kind of processes/phenomena, simulate/optimize them, visualize and analyse the results.

The following approaches/paradigms are adopted in DAE Tools:

  • A hybrid approach between general-purpose programming languages (such as c++ and Python) and domain-specific modelling languages (such as Modelica, gPROMS, Ascend etc.) (more information: The Hybrid approach).
  • An object-oriented approach to process modelling (more information: The Object-Oriented approach).
  • An Equation-Oriented (acausal) approach where all model variables and equations are generated and gathered together and solved simultaneously using a suitable mathematical algorithm (more information: The Equation-Oriented approach).
  • Separation of the model definition from the activities that can be carried out on that model. The structure of the model (parameters, variables, equations, state transition networks etc.) is given in the model class while the runtime information in the simulation class. This way, based on a single model definition, one or more different simulation/optimization scenarios can be defined.
  • Core libraries are written in standard c++, however Python is used as the main modelling language (more information: Programming language).

Class of problems that can be solved by DAE Tools:

  • Initial value problems of implicit form, described by a system of linear, non-linear, and (partial-)differential algebraic equations
  • Index-1 DAE systems
  • With lumped or distributed parameters: Finite Difference or Finite Elements Methods (still experimental)
  • Steady-state or dynamic
  • Continuous with some elements of event-driven systems (discontinuous equations, state transition networks and discrete events)

Type of activities that can be carried out with models developed in DAE Tools:

  • Simulation (steady-state or dynamic, with simple or complex operating procedures)
  • Optimization (NLP and MINLP problems)
  • Parameter estimation (the least squares method: Levenberg–Marquardt algorithm)
  • Model report generation (in XML + MathML format with XSL transformations for XHTML code generation)
  • Code generation for other modelling languages and general purpose programming languages
  • Export of the simulation results to various file formats

More information about DAE Tools can be found in the Introduction section of the Documentation.


The current and a very outdated version is 1.2.1. A new release 1.3.0 is in the beta 3 state.

Installation files can be found on the SourceForge website download section, and the source code in the SourceForge subversion repository.

More information on system requirements, downloading and installing DAE Tools can be found in Getting DAE Tools.


The third beta is released. It contains many important bug fixes, memory leaks fixes and new features.

A new version 1.3.0 will bring the following new features and improvements:

  • Numerical simulation of partial differential equations on adaptive unstructured grids using Finite Elements Method. deal.II library is used for low-level tasks such as mesh loading/processing and assembly of the system stiffness/mass matrices and the system load vector. deal.II structures are then used to generate daetools equations which are solved together with the rest of the model equations. All details about the mesh, basis functions, quadrature rules, refinement etc. are handled by the deal.II library. The advantage of this concept is that the generated equations (linear, nonlinear or differential - depending on the class of the system) can be coupled with other FE-unrelated equations in a daetools model and solved together by daetools solvers; system discontinuities can be handled as usual in daetools; modelled processes can be optimized, etc.
  • Code generators for Modelica (whole simulation or just selected models/ports), FMI and c99. They are already functional (available only in python) and located in the folder daetools/code_generators (with some tests). Almost all features available in daetools can be exported to Modelica and c, except event ports, user defined actions, external functions and finite element objects whose equations need to be updated during a simulation. The existing model analyzer make code generation rather simple (as long as the very basic modelling concepts such as parameters, variables and discontinuous equations are supported in the target language).
  • Support for Functional Mock-up Interface for Model Exchange and Co-Simulation (FMI) FMI.

A bug fix in 3D plot when detecting free domains (by Caleb Hattingh).

DAE Tools v1.2.1 is released on 14 June 2012. It brings several new features and improvements (v1.2.1). The most important are:

  • Integration speed improvements (more than an order of magnitude, in some cases); no need for a memory copy from/to the DAE solver, a better integration step control and an option to avoid sparse matrix re-creations after a discontinuity
  • Added support for units; variables, parameters, domains points must have a numerical value in terms of a unit of measurement (quantity) and units-consistency is strictly enforced (although it can be switched off in the daetools.cfg config file); all constants in equations must be dimensional and assigned units
  • A basic support for external functions that can handle and evaluate functions in external libraries (the goal is to support certain software components such as thermodynamic property packages)
  • A new type of 2D plots: Animated2D plot
  • Equations can have an optional scaling
  • Improved data reporting speed and changes in data reporting during an optimization
  • New distribution format (python disutils)
  • Mac OSX port
  • c++ (cDAE) tutorials
  • Support for the information about the progress of a simulation/optimization activity
  • Other small improvements and minor bugs fixes

Full list of news can be found here: News


The author and the main developer is dr. Dragan Nikolic View Dragan Nikolić's profile on LinkedIn

Please send your comments and questions to: dnikolic at daetools dot com.

More information about the author can be found in Contact.


Detailed information about using DAE Tools, presentations, API reference and tutorials can be found in Documentation.


This is a new DAE Tools subproject with the aim to provide a direct sparse linear equation solver which works with NVidia CUDA GPUs. More information: SuperLU CUDA.

Table Of Contents

Next topic


This Page