Main Page

From DAE Tools

Jump to: navigation, search

Contents

What is DAE Tools?

DAE Tools is a collection of software tools for modelling, simulation and optimization of real-world processes. Process modelling and simulation can be defined as theoretical concepts and computational methods that describe, represent in a mathematical form and simulate the functioning of real-world processes. 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 help you develop high-accuracy models of (in general) many different kind of processes/phenomena, simulate/optimize them, visualize and analyse the results. Its features should be sufficient to enable mathematical description of chemical, physical or socio/economic phenomena. The most common are initial value problems of implicit form, which can be formulated as systems of linear, non-linear, and (partial) differential algebraic equations.

News

Documentation is completely rewritten using Sphinx and will replace the old wiki docs. The preview can be found here.

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

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

DAE Tools software is used as a reference implementation simulator for NineML (XML-based simulator independent language for spiking neuron network modeling).

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

The documentation needs a serious revision and numerous updates; therefore the existing features will be frozen until everything is in place.

Programming paradigms

In general, there are two types of approaches that can be applied to process modelling: Domain Specific Language approach and a general-purpose programming language approach (such as c/c++, Java or Python). DAE Tools approach is a sort of the hybrid approach: it applies general-purpose programming languages such as c++ and Python, but offers a class-hierarchy/API that resembles a syntax of a DSL as much as possible, an access to the low-level functions, large number of standard and third party libraries and uses state of the art free/open-source software components to accomplish particular tasks (calculating derivatives and sensitivities, solving systems of differential and algebraic systems of equations and optimization problems, processing and plotting results etc). Read more...

The main features

DAE Tools is a cross-platform equation-oriented process modelling and optimization system. All core libraries are written in standard ANSI/ISO c++ . It is highly portable - it can run on every platform with a decent c++ compiler, Boost and standard c/c++ libraries (by now it is tested on 32/64 bit x86 and ARM architectures making it suitable for use in embedded systems). DAE Tools core libraries are small and fast, and each module can be easily extended. Models can be developed in Python (pyDAE module) or c++ (cDAE module), compiled into an independent executable and deployed without a need for any run time libraries.

Various types of processes (lumped or distributed, steady-state or dynamic) can be modelled and optimized. They may range from very simple to those which require complex operating procedures. Equations can be ordinary or discontinuous, where discontinuities are automatically handled by the framework. Model reports containing all information about a model can be exported in XML MathML format automatically creating a high quality documentation. The simulation results can be visualized, plotted and/or exported into various formats.

Currently Sundials IDAS solver is used to solve DAE systems and calculate sensitivities, while BONMIN, IPOPT, and NLOPT solvers are used to solve NLP/MINLP problems. DAE Tools support direct dense and sparse matrix linear solvers (sequential and multi-threaded versions) at the moment. In addition to the built-in Sundials linear solvers, several third party libraries are interfaced: SuperLU/SuperLU_MT, Intel Pardiso, AMD ACML, Trilinos Amesos (KLU, Umfpack, SuperLU, Lapack), and Trilinos AztecOO (with built-in, Ifpack or ML preconditioners) which can take advantage of multi-core/cpu computers. Linear solvers that exploit general-purpose graphics processing units (GPGPU, such as NVidia CUDA) are also available (SuperLU_CUDA, CUSP) but in an early development stage.

DAE Tools models can be exported into some other modelling languages. At the moment, models can be exported into pyDAE (python) and cDAE (c++) but other languages will be supported in the future (such as OpenModelica, EMSO ...).

Licence

DAE Tools is free software and you can redistribute it and/or modify it under the terms of the GNU General Public Licence version 3 as published by the Free Software Foundation (GNU philosophy).

History

"Necessity, who is the mother of invention"
Plato, Greek author & philosopher (427 BC - 347 BC), The Republic

"Every good work of software starts by scratching a developer's personal itch"
Eric S. Raymond, hacker, The Cathedral and the Bazaar, 1997

The latter cannot be more true[note 1]. The early ideas of starting a project like this go back into 2007. At that time I have been working on my PhD thesis using one of commercially available process modelling software. It was everything nice and well until I discovered some annoying bugs and lack of certain highly appreciated features. The developers of that proprietary program (as it is a case with all proprietary computer programs) had their own agenda fixing only what they wanted to fix and introducing new features that they anticipated. Although I was able to improve the code and introduce certain features which will help (not only) me - I was helpless. The source code was not available and nobody will ever consider giving it to me to create patches with bugs fixes/new features. Not even if I swear on the holy (c++) bible!!
Very soon the contours of a new process modelling software slowly began to form. It took me a while until I made a definite plan and initial features, and I had to abandon a couple of initial versions...

"Plan to throw one away; you will, anyhow"
Eric S. Raymond, hacker, The Cathedral and the Bazaar, 1997

Damn you Eric Raymond, interfering with my business again! Smile.gif The new project was officially born early next year - 2008.

Acknowledgements

DAE Tools use the following third party free software libraries (GNU GPL, GNU LGPL, CPL, EPL, BSD or some other type of free/permissive/copy-left licences):

DAE Tools can optionally use the following proprietary software libraries:

Please see the corresponding websites for more details about the licences.

How to cite

If you use DAE Tools in your work then please cite it in the following way: D. Nikolic, DAE Tools process modelling software, 2010. http://www.daetools.com

Footnotes

  1. However, I do not agree with Eric Raymond and the Open Source Iniative views - they miss the point IMO, but let us leave it beside at the moment.
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox