Fluid Dropoff

Агенты, проходя через блок, оставляют вещество. Блок выступает связующим звеном между Библиотекой Моделирования Процессов (или любой другой библиотекой на ее основе) и Библиотекой Моделирования Потоков. Предполагается, что каждый агент содержит определенный объем жидкости или объемного вещества, который нужно выгрузить, и, по прибытии агента, блок начинает выгрузку. В отличие от блока AgentToFluid, этот блок не удаляет агента. Вместо этого, блок задерживает агента до тех пор, пока не сольется все вещество, после чего выпускает агента через порт выхода, чтобы тот продолжил выполнять свою задачу.

Как и в FluidSource, блок задает ограничение на скорость выходного потока, реальная скорость не может превосходить это значение. FluidDropoff может обработать только одного агента за раз, следующий агент не будет допущен, пока вещество первого полностью не выгрузится.

Библиотека моделирования потоков будет стремиться увеличить до максимума скорость выходных потоков из всех источников вещества, поэтому приоритет выходного потока FluidDropoff по умолчанию равен 1. Иногда, чтобы разрешить конфликт приоритетов, вам может понадобиться изменить приоритет потока на выходе, увеличив его значение.

Опционально, FluidDropoff может создавать партии, одна партия для одного агента. Тип и цвет партии может зависеть от агента, который может быть доступен в динамическом поле Партия.

Демо модель: FluidDropoff

Свойства

Извлечь объем [динамический]
Определяет объем вещества, который оставит агент.
Тип значения: double
Локальная переменная:  agent - агент
Скорость
Максимальная (заданная) скорость на выходе.
Синтаксис: double rate
Установить новое значение во время выполнения: set_rate (новое значение)
Другой приоритет
Если поле отмечено флажком, приоритет выходного потока будет определяться параметром Приоритет выходного потока, в противном случае будет равен 1. Приоритет влияет на решатель линейных уравнений, когда последний пытается максимально увеличить проходимость в системе.
Синтаксис: boolean customPriority
Установить новое значение во время выполнения: set_customPriority (новое значение)
Приоритет выходного потока
[Параметр виден и применяется только в том случае, когда установлен флажок напротив пункта Другой приоритет] Здесь вы можете задать другой приоритет потока на выходе из данного блока в общей диаграмме процесса. Значение приоритета должно быть положительным числом.
Синтаксис: int priorityOutCustom
Установить новое значение во время выполнения: set_priorityOutCustom (новое значение)
Другие партии [ динамический]
Определяет, будет ли блок создавать другие партии (что также может зависеть от агента). Если пункт отмечен флажком, партия, соответствующая агенту, будет определена параметром Партия. В противном случае, будет иметь вид BatchTypes.DEFAULT_BATCH.
Тип значения: boolean
Локальная переменная:  agent - агент
Партия [динамический]
[Параметр виден и применяется только в том случае, если установлен флажок напротив пункта Другая партия] Определяет партию, которая будет создана для текущего агента.
Тип значения: Object
локальная переменная:  agent - агент
Изменить цвет партии
Определяет, будет ли у партии другой цвет. Если пункт отмечен флажком, цвет партии будет определяться параметром Цвет партии, в противном случае будет применяться стандартная цветовая схема.
Синтаксис: boolean customBatchColor
Установить новое значение во время выполнения: set_customBatchColor (новое значение)
Цвет партии [динамический]
[Параметр виден и применяется только в том случае, если выбрана опция Изменить цвет партии] Определяет цвет текущей партии, который может зависеть от агента и партии.
Тип значения: Color
Локальные переменные:  agent - агент
                                            Object batch - партия
Место агента
Фигура разметки (узел или путь), где располагаются агенты, пока они находятся в этом блоке диаграммы процессов.
Имя: agentLocation
Установить новое значение во время выполнения: set_agentLocation (новое значение)
Анимация
Резервуар
Здесь можно указать имя элемента разметки пространства Резервуар, используемого в качестве фигуры анимации блока Dropoff (как в 2D, так и в 3D). Резервуар отображает вещество, которое в данный момент находится в блоке.
Синтаксис: StorageTank storageTank
Отображать партии в блоке
Если установлен флажок, иконка блока будет отображать текущий цвет партии.
Синтаксис: boolean showBatchesInFlowchart
Установить новое значение во время выполнения: set_showBatchesInFlowchart (новое значение)
Действия
При входе [код]
Действия выполняются при входе агента в блок.
Локальная переменная:  agent - агент
При завершении [код]
Действие выполняется, когда весь объем выгружен (слит через порт outFluid). Агент проследует к порту out, после чего следующему агенту можно будет зайти.
Локальные переменные:  agent - агент
                          double amount - объем
При изменении скорости [код]
Действие выполняется, когда изменяется скорость потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальная переменная:  double outrate - текущая скорость потока в выходном порте

Функции

double amountPassed() - Возвращает общий объем вещества, который прошел через порт блока outFluid с начала запуска модели.

double amount()- Возвращает объем вещества, который в данный момент находится в блоке и готов к переливанию. Этот объем не может превосходить объем вещества, который может выгрузить текущий агент.

double totalAmountToDropoff() - Возвращает общий объем выгружаемого вещества, или 0, если в блоке нет агента.

Agent agent() - Возвращает текущего агента, который разгружается, или null если нет агента.

double amount(AmountUnits units)- Возвращает объем вещества (в заданных единицах измерения объема), который в данный момент находится в блоке и готов к переливанию. Этот объем не может превосходить объем вещества, который может выгрузить текущий агент.

double amountPassed(AmountUnits units) - Возвращает общий объем вещества (в заданных единицах измерения объема), который прошел через порт блока outFluid с начала запуска модели.

double totalAmountToDropoff(AmountUnits units) - Возвращает общий объем вещества (в заданных единицах измерения объема), который выгружает текущий агент, или 0 если в блоке нет агента.

double currentRate() - Возвращает текущую скорость потока вещества на выходе.

double currentRate(FlowRateUnits units) - Возвращает текущую скорость потока вещества (в заданных единицах измерения скорости) на выходе.

void resetStats() - Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.

Порты

outFluid
Порт выхода вещества. 
in
Порт, в который попадает агент.
out
Порт, из которого выходит агент.