DAE Tools Project
DAE Tools is a cross-platform equation-based and object-oriented process
modelling and optimization software. It is not a modelling language nor a collection of numerical
libraries but rather a higher level structure – an architectural design of interdependent
software components providing an API for:
- Model development/specification
- Activities on developed models, such as simulation, optimization, and parameter estimation
- Processing of the results, such as plotting and exporting to various file formats
- Report generation
- Code generation, co-simulation 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 performed on 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:
- Generation of model reports (in XML + MathML format with XSL transformations for XHTML code generation)
- Code generation for other modelling or general-purpose programming languages
- Simulation in other simulators using standard co-simulation interfaces
- Export of the simulation results to various file formats:
More information about DAE Tools can be found in the Introduction section
of the Documentation and the following publications:
The current release is 1.4.0.
Installation files can be found in 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.
- [April 8 2016] The first article on DAE Tools has been published in PeerJ Computer Science:
- Nikolić DD. (2016) DAE Tools: equation-based object-oriented modelling, simulation and optimisation software.
PeerJ Computer Science 2:e54. doi:10.7717/peerj-cs.54.
The new 1.4.0 version is released on 28 December 2014. It contains a large number of important features and bug fixes.
The most important new features:
- Code generators for Modelica, gPROMS and c99.
They can be found in daetools/code_generators. Almost all features
available in daetools are supported except event ports, user defined actions,
external functions and finite element objects whose equations need to be updated during
- Support for simulation in other simulators using standard interfaces for Co-Simulation:
Functional Mockup Interface, Matlab MEX-functions
and Simulink S-functions.
- DAE Tools objects such as adouble can be used as NumPy native data type.
The most of the NuPy and SciPy functions are supported.
- New data reporters that export the simulation results to various file formats (MS Excel, hdf5, xml, json) and
to Pandas data sets.
- Added new math functions: Sinh, Cosh, Tanh, ASinh, ACosh, ATanh, ATan2 and Erf to adouble/adouble_array.
- Added Pardiso linear solver.
- Added SimulationExplorer GUI that lists all domains, parameters, initial conditions, degrees of freedom
and state transition networks.
- Simulations can export the initialization values to JSON format and initialize using a JSON string.
daetools.cfg config file is now in JSON format.
- Domains and parameters can now be propagated through the whole model hierarchy (daeModel.PropagateDomain() and
daeModel.PropagateParameter()). All domains/parameters with the same name will have identical properties.
- daeVariable functions SetValues, SetInitialConditions, AssignValues etc. accept NumPy arrays as arguments.
Now, values and initial conditions can be set using numpy float or quantity arrays.
- All equation can generate Jacobian expressions by setting daeEquation.BuildJacobianExpressions to True.
This is useful when an expression is huge and contains a large number of variables. Calculation of a Jacobian
for such equation would take a very long time. Generation of Jacobian expressions will increase the memory
requirements but may tremendously decrease the computational time.
- 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.
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.