
Advisory messages
+++++++++++++++++

These messages are returned by ``simulate( )``, as in
``message=simulate(until=123)``.

Upon a normal end of a simulation, ``simulate( )`` returns the message:

- **SimPy: Normal exit**. This means that no errors have occurred and
  the simulation has run to the time specified by the ``until`` parameter.

The following messages, returned by ``simulate( )``, are produced at a premature
termination of the simulation but allow continuation of the program.

- **SimPy: No more events at time x**. All processes were completed prior
  to the *endtime* given in *simulate(until=endtime)*.

- **SimPy: No activities scheduled**. No activities were scheduled
  when *simulate( )* was called.

Fatal error messages
++++++++++++++++++++

These messages are generated when SimPy-related fatal  exceptions occur.
They end the SimPy program. Fatal SimPy error messages are output to
*sysout*.

- **Fatal SimPy error: activating function which is not a generator (contains no 'yield')**.
  A process tried to (re)activate a function which is not a
  SimPy process (=Python generator). SimPy processes must contain
  at least one *yield . . .* statement.

- **Fatal SimPy error: Simulation not initialized**. The SimPy program
  called *simulate( )* before calling *initialize( )*.

- **SimPy: Attempt to schedule event in the past**: A *yield hold* statement
  has a negative delay time parameter.

- **SimPy: initialBuffered exceeds capacity**: Attempt to initialize a Store
  or Level with more units in the buffer than its capacity allows.

- **SimPy: initialBuffered param of Level negative: x**: Attempt to
  initialize a Level with a negative amount x in the buffer.

- **SimPy: Level: wrong type of initialBuffered (parameter=x)**: Attempt to
  initialize a buffer with a non-numerical initial buffer content x.

- **SimPy: Level: put parameter not a number**: Attempt to add a
  non-numerical amount to a Level's buffer.

- **SimPy: Level: put parameter not positive number**: Attempt to add
  a negative number to a Level's amount.

- **SimPy: Level: get parameter not positive number: x**: Attempt to
  get a negative amount x from a Level.

- **SimPy: Store: initialBuffered not a list**: Attempt to initialize
  a Store with other than a list of items in the buffer.

- **SimPy: Item to put missing in yield put stmt**: A *yield put* was
  malformed by not having a parameter for the item(s) to put into the
  Store.

- **SimPy: put parameter is not a list**: *yield put* for a Store must
  have a parameter which is a list of items to put into the buffer.

- **SimPy: Store: get parameter not positive number: x**: A *yield
  get* for a Store had a negative value for the number to get from the
  buffer.

- **SimPy: Fatal error: illegal command: yield x**: A *yield*
  statement with an undefined command code (first parameter) x was
  executed.


Monitor error messages
++++++++++++++++++++++

- **SimPy: No observations for mean**. No observations were made by the
  monitor before attempting to calculate the mean.

- **SimPy: No observations for sample variance**. No observations were made by the
  monitor before attempting to calculate the sample variance.

- **SimPy: No observations for timeAverage**, No observations
  were made by the monitor before attempting to calculate the time-average.

- **SimPy: No elapsed time for timeAverage**. No simulation
  time has elapsed before attempting to calculate the time-average.

