Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## umontreal.iro.lecuyer.simevents
Class Simulator

    java.lang.Object
      umontreal.iro.lecuyer.simevents.Simulator

Direct Known Subclasses:
  ProcessSimulator

    public class Simulator

extends Object

Represents the executive of a discrete-event simulator. This class maintains a simulation clock, an event list, and starts executing the events in the appropriate order. Its methods permit one to start, stop, and (re)initialize the simulation, and read the simulation clock.

Usually, a simulation program uses a single simulation clock which is represented by an instance of this class. For more convenience and compatibility, this class therefore provides a mechanism to construct and return a default simulator which is used when an event is constructed without an explicit reference to a simulator, and when the simulator is accessed through the `Sim` class.

Note that this class is NOT thread-safe. Consequently, if a simulation program uses multiple threads, it should acquire a lock on a simulator (using a `synchronized` block) before accessing its state.

Field Summary
`static Simulator` | `defaultSimulator` Represents the default simulator being used by the class `Sim`, and the no-argument constructor of `Event`.

Constructor Summary
`Simulator()` Constructs a new simulator using a splay tree for the event list.
`Simulator(EventList eventList)` Constructs a new simulator using `eventList` for the event list.

Method Summary
`ContinuousState` | `continuousState()` Returns the current state of continuous variables being integrated during the simulation.
`static Simulator` | `getDefaultSimulator()` Returns the default simulator instance used by the deprecated class `Sim`.
`EventList` | `getEventList()` Gets the currently used event list.
`void` | `init()` Reinitializes the simulation executive by clearing up the event list, and resetting the simulation clock to zero.
`void` | `init(EventList evlist)` Same as `init`, but also chooses `evlist` as the event list to be used.
`boolean` | `isSimulating()` Determines if this simulator is currently running, i.e., executing scheduled events.
`boolean` | `isStopped()` Determines if this simulator was stopped by an event.
`void` | `start()` Starts the simulation executive.
`void` | `stop()` Tells the simulation executive to stop as soon as it takes control, and to return control to the program that called `start`.
`double` | `time()` Returns the current value of the simulation clock.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### defaultSimulator

    public static Simulator defaultSimulator

  Represents the default simulator being used by the class `Sim`, and the no-argument constructor of `Event`. This simulator is usually obtained with the `getDefaultSimulator` method, which initializes it if needed. But it might also be initialized differently, e.g., if process-driven simulation is required.

Constructor Detail

### Simulator

    public Simulator()

  Constructs a new simulator using a splay tree for the event list.

### Simulator

    public Simulator(EventList eventList)

  Constructs a new simulator using `eventList` for the event list.

Method Detail

### time

    public double time()

  Returns the current value of the simulation clock.

  Returns:
    the current simulation time

### init

    public void init()

  Reinitializes the simulation executive by clearing up the event list, and resetting the simulation clock to zero.

### init

    public void init(EventList evlist)

  Same as `init`, but also chooses `evlist` as the event list to be used. For example, `init (new DoublyLinked())` initializes the simulation with a doubly linked linear structure for the event list. To initialize the current `Simulator` with a not empty eventList is also possible, but the events scheduled in the eventList will be linked with the current simulator only.

  Parameters:
    `evlist` - selected event list implementation

### getEventList

    public EventList getEventList()

  Gets the currently used event list.

  Returns:
    the currently used event list

### isSimulating

    public boolean isSimulating()

  Determines if this simulator is currently running, i.e., executing scheduled events.

### isStopped

    public boolean isStopped()

  Determines if this simulator was stopped by an event. The simulator may still be processing the event which has called the `stop` method; in this case, `isSimulating` returns `true`.

### start

    public void start()

  Starts the simulation executive. There must be at least one `Event` in the event list when this method is called.

### stop

    public void stop()

  Tells the simulation executive to stop as soon as it takes control, and to return control to the program that called `start`. This program will then continue executing from the instructions right after its call to `start` If an `Event` is currently executing (and this event has just called `stop`), the executive will take control when the event terminates its execution.

### continuousState

    public ContinuousState continuousState()

  Returns the current state of continuous variables being integrated during the simulation. This state is used by the `Continuous` class when performing simulation of continuous variables; it defaults to an empty state, which is initialized only when this method is called.

  Returns:
    continuousState field

### getDefaultSimulator

    public static Simulator getDefaultSimulator()

  Returns the default simulator instance used by the deprecated class `Sim`. If this simulator does not exist yet, it is constructed using the no-argument constructor of this class. One can specify a different default simulator by setting the `defaultSimulator` field directly.

Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.