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:

  • Arizona Center for Integrative Modeling and Simulation.
  • Advanced Real-Time Simulation Lab at Carleton University.
  • University of Corsica.
  • Simulation software for DEVS models.
  • VLAB-Virtual Laboratory for Autonomous Agents at the University of New Mexico.

    And host of others can be found at the DEVS Wikipedia entry.

    Online documentation for adevs is available here.

    The latest stable release is 2.8.1. To extract the source, use tar xfzv adevs.tar.gz or gunzip adevs.tar.gz; tar xfv adevs.tar. The development code is available here on SourceForge. If you are using the OpenModelica extensions, then you should use this development code because the OpenModelica compiler and adevs support for it are evolving rapidly.

    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).

    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.

  • adevs-2.8.1: adevs.tar.gz
  • adevs_v1_compat-1.0: adevs_v1_compat.tar.gz

    You can get old versions of the adevs software here:

  • adevs-2.8: adevs-2.8.tar.gz
  • adevs-2.7: adevs-2.7.tar.gz
  • adevs-2.6: adevs-2.6.tar.gz
  • adevs-2.5: adevs-2.5.tar.gz
  • adevs-2.4.3: adevs-2.4.3.tar.gz
  • adevs-2.4.2: adevs-2.4.2.tar.gz
  • adevs-2.4.1: adevs-2.4.1.tar.gz
  • adevs-2.4: adevs-2.4.tar.gz
  • adevs-2.3: adevs-2.3.tar.gz
  • adevs-2.2.1: adevs-2.2.1.tar.gz
  • adevs-2.2: adevs-2.2.tar.gz
  • adevs-2.1: adevs-2.1.tar.gz
  • adevs- adevs-
  • adevs- adevs-
  • adevs-2.0.5: adevs-2.0.5.tar.gz
  • adevs-2.0.4: adevs-2.0.4.tar.gz
  • adevs-2.0.2: adevs-2.0.2.tar.gz
  • adevs-2.0.1: adevs-2.0.1.tar.gz
  • adevs-1.4: adevs-1.4.tar.gz
  • adevs-1.3.4: adevs-1.3.4.tar.gz

    The semantics of the hold() method have changed slightly since version 1.3.3. See the manual for detail.

  • adevs-1.3.3: adevs-1.3.3.tar.gz
  • adevs-1.3: adevs-1.3.tar.gz
  • adevs-1.2: adevs-1.2.tar.gz
  • adevs-1.1: adevs-1.1.tar.gz
  • adevs-1.0.6: adevs-1.0.6.tar.gz
  • adevs-1.0.5: adevs-1.0.5.tar.gz
  • adevs-1.0.4: adevs-1.0.4.tar.gz
  • adevs-1.0.3: adevs-1.0.3.tar.gz
  • adevs-0.11: adevs-0.11.tar.gz

    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