Adevs (A Discrete EVent System simulator) is a C++ library for constructing discrete event simulations based on the Parallel DEVS and Dynamic DEVS (dynDEVS) formalisms. DEVS has been applied to the study of social systems, ecological systems, computer networks and computer architecture, military systems at the tactical and theater levels, and in many other areas. Recent advances in quantized approximations of continuous systems suggest promising computational techniques for high performance scientific computing (e.g. in the field of computational fluid dynamics). Here is a short (and by no means complete) list of groups doing research on DEVS:
And host of others can be found at the DEVS Wikipedia entry.
Online documentation for adevs is available here.
The latest stable release is 3.0. To extract the source, use unzip adevs-3.0.zip. The development code is available here on SourceForge. If you want to use the FMI extensions, then you will also need the header files from here.
Version 3.0 removes the experimental backend for OpenModelica and replaces it with a more stable solution for importing FMI modules.
There is also a (limited) backward compatibility package for developers who have a project based on adevs-1.x. The online documentation for the adevs_v1_compat package is here.
The development version of adevs, which is available via svn from sourceforge, includes experimental support for using qemu and ucsim to host "live" software in your simulations. You will need to apply this patch to the qemu development software to try this out or this patch to ucsim. To use the qemu patch, you will need to get the proper (old) version of qemu and then apply the patch before following the usually qemu build procedure (see the qemu docs). Here is the series of commands to get the qemu source code:
git clone http://git.qemu.org/git/qemu.git git reset --hard 76c62820cd2622119308ea7e21a52b8dd7a33146 git apply qqq.patch
You can get old versions of the adevs software here:
The semantics of the hold() method have changed slightly since version 1.3.3. See the manual for detail.
Version 2.8.1 fixes problems in the random variable class and updates the runtime system for OpenModelica (though if you are using the latter, it is better to get the development code from SourceForge).
Version 2.8 changes the license from the LGPL to the less restrictive Free BSD.
Version 2.6 has improved support for the OpenModelica compiler, adds support for user defined types for time, and includes new documentation for both of these features.
Version 2.5 adds support for the OpenModelica compiler. This new feature works in conjunction with the Adevs backend of the OpenModelica compiler for the Modelica modeling language. This backend generates atomic models for the adevs simulator based on the approach described in the book Building Software for Simulation. To take advantage of this new feature, you will need to build a copy of the OpenModelica compiler from its source code (or, if you don't need this feature, you can build the adevs library without support for OpenModelica). See the user manual and examples in the adevs/examples/modelica directory for information on how to include Modelica models in an adevs-based simulation.
Version 2.4.3 adds significantly improved support for building conservative, parallel discrete event simulators based on OpenMP. The user manual has been updated to describe the new features parallel simulation.
Version 2.4.1 adds the examples from "Building Software for Simulation" by James Nutaro, published by Wiley and to appear in October 2010.
Version 2.4 adds a Java language bindings to the core functionality of the C++ simulator.
Version 2.3 adds a new, more flexible framework for simulating hybrid systems and updated documentation for the API, especially in regards to the conservative simulator.
Version 2.2.1 fixes a problem with a conflict between the exp method of the random number generator and the exp function the C math library.
Version 2.2 includes an experimental, conservative parallel simulator that is implemented using OpenMP. If you have a compiler with OpenMP support and want to try it out, see the HTML documentation for the ParSimulator class (this stuff hasn't made it into the manual).
Version 2.0 includes a major revision of the API for modeling building and simulation.
You can contact Jim Nutaro, the developer and maintainer of this software, by email at email@example.com.