Virtual Laboratory Environment

Version 2.0.2

A Modeling & Simulation Environment


A simple model that counts events received in any input port.

First, we create a new package with the following command:

mkdir -p cd $HOME/vle/tutorial
cd $HOME/vle/tutorial
vle -P examples create

We add the file “counter.cpp” and update the CMakeLists.txt file in the src directory.

#include <vle/devs/Dynamics.hpp>
#include <vle/value/Double.hpp>

namespace example {

class Counter : public vle::devs::Dynamics
    Counter(const vle::devs::DynamicsInit& model,
            const vle::devs::InitEventList& events)
        : vle::devs::Dynamics(model, events)
        , m_counter(0),

    virtual ~Counter()

    virtual vle::devs::Time init(
                const vle::devs::Time& /* time */)
        return 0;

    virtual vle::devs::Time timeAdvance() const
        return vle::devs::infinity;

    virtual void externalTransition(
                const vle::devs::ExternalEventList& events,
                const vle::devs::Time& time)
        m_counter += events.size();

    virtual vle::value::Value* observation(
                const vle::devs::ObservationEvent& event) const
        return new vle::value::Double(m_counter);

    std::size_t m_counter;

}}} // namespace vle examples counter


Then build the package:

    vle -P example configure build
Last updated on 29 Nov 2018, 15:39
Edit on GitHub