Fluid Dropoff

Drops off fluid from the passing through agents. Serves as an interface block between the Process Modeling Library (or any other library based on it) and the Fluid Library. Each agent is assumed to have a certain amount of fluid or bulk matter to
drop off, and upon arrival of an agent, this block starts the outflow. Unlike the
AgentToFluid
block, this block does not delete the agent. Instead, the block delays the agent until the fluid has completely flowed out, releases the agent through the out port and lets it continue its operation.
Similar to
FluidSource, this block has a desired output rate, and the actual rate may be less or equal the desired rate. The specified rate cannot be lower than the value of
Utils.RATE_TOLERANCE
constant, i.e. 1.0e-9. If rate value falls below this value after recalculation, it will be snapped to 0.
FluidDropoff
may contain only one agent at a time, and the next agent will not be let in until the fluid of the current agent has completely flowed out.
The Fluid Library will try to maximize the out flow of all fluid sources; therefore, the priority of
FluidDropoff
out flow is set to 1 by default. Sometimes, to resolve flow priority conflicts, you may need to customize the out flow priority by further increasing it.
Optionally,
FluidDropoff
can generate batches, one batch per agent. The batch type and color can depend on the agent as the agent can be accessed from the dynamic
Batch
field.
Parameters
- Fluid to dropoff
[dynamic]
- Determines the amount of fluid to be dropped off by the agent.
Type of value:
double
Local variable:
Agent
agent
- the agent
- Rate
- The maximum (desired) output rate.
Syntax:
double rate
Set new value at runtime:
set_rate(new value)
- Custom priority
- If the option is set (the value equals
true), the priority of the pipeline outflow will be defined by the
Output flow priority
parameter below, otherwise it equals 1. Priority affects the LP solver when it tries to maximize the flow through the system.
Syntax:
boolean customPriority
Set new value at runtime:
set_customPriority(new value)
- Output flow priority
- [Visible and applies only if the
Custom priority
option is set] Custom priority of the outflow of this block in the overall flowchart. Must be a positive integer.
Syntax:
int priorityOutCustom
Set new value at runtime:
set_priorityOutCustom(new value)
- Custom batches
[dynamic]
- Determines whether the block will generate custom batches (which may depend on the agent). If the option is selected, the batch corresponding to the agent will be defined by the
Batch
parameter. If not, it will be
BatchTypes.DEFAULT_BATCH.
Type of value:
boolean
Local variable:
Agent
agent
- the agent
- Batch
[dynamic]
- [Visible and applies only if the
Custom
option is set] Defines the batch to be created for the current agent.
Type of value:
Object
Local variable:
Agent
agent
- the agent
- Custom batch color
- [Visible and applies only if the
Custom
option is set] If the option is set, the batch color is defined by the
Batch color
parameter, otherwise the standard color mapping applies.
Syntax:
boolean customBatchColor
Set new value at runtime:
set_customBatchColor(new value)
- Batch color
[dynamic]
- [Visible and applies only if the
Custom batch color
option is set] Defines the color of the current batch, which may depend on the agent and the batch.
Type of value:
Color
Local variables:
Agent
agent
- the agent
Object batch
- the batch
- Agent location
- Space markup shape (node
or
path) where the agents are located while being in this block.
Name:
agentLocation
Set new value at runtime:
set_agentLocation(new value)
-
Animation
- Storage tank
- Here you can specify the name of
Storage tank
space markup shape used to animate
FluidDropoff
(both in 2D and 3D animation). The storage tank animates the fluid the block currently contains.
Syntax:
StorageTank storageTank
- Show batches in flowchart
- If set, the block icon will display the current batch color.
Syntax:
boolean showBatchesInFlowchart
Set new value at runtime:
set_showBatchesInFlowchart(new value)
-
Actions
- On enter
[code]
- Action executed upon arrival of an agent at the block.
Local variable:
Agent
agent
- the agent
- On agent done
[code]
- Action executed when the total amount has been dropped off (flowed out through the
outFluid
port). The agent will proceed to the
out
port, and the next agent will be allowed to enter.
Local variables:
Agent
agent
- the agent
double amount
- the amount
- On rate change
[code]
- Action executed when the flow rate changes. Please note that changing something in the action may result in another immediate rate change and immediately following another call of
On rate change, so the user can possibly create a livelock.
Local variable:
double outrate
- the current output rate
Functions
double amountPassed()
- Returns the total amount of fluid passed through the
outFluid
port of the block since the start of the simulation.
double amount()
- Returns the amount of fluid currently contained in the block and waiting to flow out. This amount is less or equal the total amount of fluid to be dropped off by the current agent.
double totalAmountToDropoff()
- Returns the total amount of fluid being dropped off by the current agent, or 0 if there is no agent in the block.
Agent
agent()
- Returns the current agent dropping off fluid, or
null
if there is no agent.
double amount(AmountUnits units)
- Returns the amount of fluid (in given units) currently contained in the block and waiting to flow out. This amount is less or equal the total amount of fluid to be dropped off by the current agent.
double amountPassed(AmountUnits units)
- Returns the total amount of fluid passed (in given units) through the
outFluid
port of the block since the start of the simulation.
double totalAmountToDropoff(AmountUnits units)
- Returns the total amount of fluid (in given units) being dropped off by the current agent, or 0 if there is no agent in the block.
double currentRate()
- Returns the current flow rate of fluid that goes out.
double currentRate(FlowRateUnits units)
- Returns the current flow rate (in given units) of fluid that goes out.
void resetStats()
- Resets statistics collected for this block, including the statistics collected for its ports.
Ports
- outFluid
- The fluid output port.
- in
- The agent input port.
- out
- The agent output port.