Fluid Pickup

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

Также, как FluidDispose и FluidToAgent, этот блок может принимать поток на любой скорости. Когда в блоке нет агента, он не содержит вещества и в него не попадает вещество. FluidPickup может принимать только одного клиента за раз, второй агент не сможет попасть в блок, пока текущий агент его не покинул.

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

Свойства

Забирать
Определяет режим забора:
Заданный объем - агент забирает указанный объем жидкости.
Отдельную партию - агент забирает любую не пустую партию (агент отпускается, когда в этом блоке появляется новая партия).
Синтаксис: boolean pickupByAmount
Установить новое значение во время выполнения: set_pickupByAmount(новое значение)
Допустимые значения: true  - Объем жидкости
                    false - Партия
Забрать объем [динамический]
[Параметр виден и применяется только в том случае, если установлена опция Заданный объем] Определяет объем вещества, который должен забрать агент. Это динамический параметр, который пересчитывается при заходе каждого агента.
Тип значения:  double
Локальная переменная:  agent - агент
Место агента
Фигура разметки пространства, в которой будет отображаться анимация агента, находящегося во внутреннем блоке Delay.
Синтаксис: agentLocation
Установить новое значение во время выполнения: set_agentLocation(новое значение)
Анимация
Резервуар
Здесь можно указать имя элемента разметки пространства Резервуар, используемого в качестве фигуры анимации блока FluidPickup (как в 2D, так и в 3D). Резервуар Резервуар отображает вещество, которое в данный момент находится в блоке.
Синтаксис: StorageTank storageTank
Отображать партии в блоке
Если установлен флажок, иконка блока будет отображать текущий цвет партии.
Синтаксис: boolean showBatchesInFlowchart
Установить новое значение во время выполнения: set_showBatchesInFlowchart(новое значение)
Действия
При входе [код]
Действия выполняются при входе агента в блок, прежде чем объем вещества, заданный параметром Забрать объем, будет оценен и блок начнет принимать вещество.
Локальная переменная:  agent - агент
При выходе [код]
Действие выполняется, когда агент забрал вещество и покидает блок. У вас есть доступ к агенту, объему вещества, которое он забрал, и партии.
Локальная переменная:  agent - агент
                          double amount - объем
                          Object batch - партия
При изменении скорости [код]
Действие выполняется, когда изменяется скорость потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальная переменная:  double inrate - текущая скорость потока во входном порте

Функции

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

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

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

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

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

Object getBatch() - Возвращает партию, которая в данный момент наполняет блок .

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

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

Порты

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