PureDelay

Delay the flow of material for a fixed (but variable) delay time

Diagram

Information

This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.

At any given time, the inflow to the PureDelay is delayed by an exact amount of time given either by the parameter delayTime or the continuous input u. Changes in the delay time will only affect the current or later inflow, i.e., whatever is already in the process of being delayed will not be affected.

Implementation

The PureDelay  will work at discrete time intervals:

when sample(modelSettings.modelStartTime + samplingPeriod, samplingPeriod) then
  // load new material into the stock, move loaded material, unload material
end when;

The values for the in- and outflows and the load will be kept constant between events.

Notes

  • All inflows have to go to the inflow port of the PureDelay.

  • Since the outflow will be controlled by the PureDelay, →OutflowDynamicStock or →SplitOutflowDynamicStock have to be connected to the outflow port.

  • Using more than one outflow (e.g., →SplitOutflowDynamicStock) can be used to model leaking.

    • The parameter init in the Advanced tab allows to select →InitializationOptions:
      • FixedValue (default) will initialize the stock according to value given by the parameter initialValue.

      • SteadyState will use Little's Law to determine the equilibrium start value as inflow.rate * delayTime

      • Free tells the solver that it is free in solving the initial value problem using initialValue as startValue.
  • Units that enter the stock later than other units can "overtake" these units and actually flow out earlier, should the time of delay decrease after those earlier entries. If that behavior is not wanted, then a Conveyor should be used, which will preserve order of entry (units can at best leave at the same time, but not earlier than units, that have already entered the stock).

See also

SimpleConveyor, Conveyor, DelayNDelayFixedDelayInformation

Parameters (9)

init

Value: modelSettings.init

Type: InitializationOptions

Description: Provide InitializationOptions (Free, FixedValue, SteadyState)

hasStockInfoOutput

Value: false

Type: Boolean

Description: = true, if a StockInfoOutput should be added to the stock

initialValue

Value: 0

Type: OutputType

Description: Initial load

delayTime

Value: 1

Type: Time (s)

Description: Constant delay time (optional)

maxDelayTime

Value: 10

Type: Time (s)

Description: Maximum delay time (to restrict memory usage)

samplingPeriod

Value: modelSettings.samplingPeriod

Type: Time (s)

Description: Sampling period for discrete behavior (should be smaller than dt/2)

hasConstantDelayTime

Value: true

Type: Boolean

Description: = true, if the delay time is to be given by a constant parameter

hasExogenousHistory

Value: false

Type: Boolean

Description: =true, if the outflow-profile for the initial load is to be given by an external lookup function

strict

Value: true

Type: Boolean

Description: = true, if strict limits with noEvent(..) (clippedDelayTime.strict)

Connectors (7)

y

Type: RealOutput

Description: Level or rate information

y1

Type: RealOutput

Description: Level or rate information

y2

Type: RealOutput

Description: Level or rate information

inflow

Type: StockPort

Description: Inflow port of the stock

outflow

Type: StockPort_Special

Description: Special outflow port of the stock (stock sets rate)

y_stockInfo

Type: StockInfoOutput

Description: Optional StockInfoOutput

u

Type: RealInput

Description: Delay time input (optional)

Components (4)

modelSettings

Type: ModelSettings

Description: Setting important global variables within a model

clippedDelayTime

Type: Clip

Description: Current delay time

parDelayTime

Type: ConstantConverterTime

Description: Constant delay time (optional)

dynamicStockInfo1

Type: DynamicStockInfo

Description: Collect basic stock-related information for stocks with implicit dynamics

Used in Components (1)

PipelineDelay

BusinessSimulation.CausalLoop

Fixed or pure delay of input flow