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
- 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:
- 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
and the source code in the SourceForge
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
- 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
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.