Process Tank

Накапливает вещество до уровня Вместимости, опционально задерживает (к примеру, обрабатывает) его определенное время, после чего выпускает. Параметр Вместимость является динамическим и расcчитывается в начале каждого цикла, т.е., первый раз в начале моделирования и после этого каждый раз, когда вещество полностью покидает блок. Вы можете обновить значение параметра Вместимость в любое время с помощью функции updateCapacity(). Скорость потока на входе не ограничена, скорость потока на выходе может быть опционально ограничена.

Партия на выходе может быть выбрана равной той же, что вошла в блок, быть партией по умолчанию или другой партией.

Блок ProcessTank позволяет задать действия, которые будут выполняться в следующих случаях: 

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

Свойства

Вместимость [динамический]
Общий объем вещества, который должен накопиться в резервуаре до того, как начнется обработка (задержка).
Тип значения: double
Время задержки
Время, которое вещество должно находиться в резервуаре после того, как будет достигнут уровень Вместимости и прежде, чем оно сможет покинуть блок.
Синтаксис: double delayTime
Установить новое значение во время выполнения: set_delayTime(новое значение)
Скорость на выходе ограничена
Если пункт отмечен флажком (true), вы можете выбрать другой верхний предел скорости потока на выходе из резервуара.
Синтаксис: boolean limitRateOut
Установить новое значение во время выполнения: set_limitRateOut(новое значение)
Макс. скорость на выходе
[Параметр виден и применяется только в том случае, если установлена опция Скорость на выходе ограничена] Определяет другой верхний предел скорости потока на выходе из резервуара. Значение по умолчанию составляет 1 куб. метр в секунду.
Синтаксис: double maxRateOut
Установить новое значение во время выполнения: set_maxRateOut(новое значение)
Партия на выходе
Определяет партию на выходе из резервуара. Выберите один из вариантов:
Та же, что и вошла в блок - партия на выходе является той же, что попала в резервуар
По умолчанию - партия на выходе равна партии по умолчанию BatchTypes.DEFAULT_BATCH
Другая - партия на выходе определяется параметром Партия ниже.
Получить значение: modeOutputBatch
Установить новое значение во время выполнения: set_modeOutputBatch(новое значение)
Допустимые значения: ProcessTank.OUTPUT_BATCH_IN1  - Та же, что и вошла в блок
           ProcessTank.OUTPUT_BATCH_DEFAULT
 -  По умолчанию
           ProcessTank.OUTPUT_BATCH_CUSTOM  -
Другая
Партия [динамический]
[Параметр виден и применяется только в том случае, если установлена опция Партия на выходе: Другая] Определяет партию на выходе. Партия на выходе может зависеть от поступившей в блок партии (для этого используйте переменную originalBatch).
Тип значения: Object
Локальная переменная:  Object originalbatch - поступившая в блок партия
Изменить цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Партия на выходе: Другая] Если отмечено флажком, цвет партии определяется параметром Цвет партии, в противном случае, применяется стандартная карта цветов.
Синтаксис: boolean customOutputBatchColor
Установить новое значение во время выполнения: set_customOutputBatchColor(новое значение)
Цвет партии [динамический]
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии] Определяет цвет партии на выходе.
Тип значения: Color
Локальная переменная:  Object batch - партия
Анимация
Резервуар
Здесь вы указываете элемент разметки пространства Резервуар, который используется в качестве анимации этого резервуара.
Синтаксис: StorageTank storageTank
Установить новое значение во время выполнения: set_storageTank(новое значение)
Отображать партии в блоке
Если отмечено флажком, иконка блока будет отображать текущий цвет партии.
Синтаксис: boolean showBatchesInFlowchart
Установить новое значение во время выполнения: set_showBatchesInFlowchart(новое значение)
Действия
При наполнении [код]
Действие выполняется, когда вещество достигло уровня Вместимости и впускной клапан перекрывается.
При готовности [код]
Действие выполняется, когда вещество находится в резервуаре необходимое время (если нужно), до того, как оно покинет резервуар.
При опустошении [код]
Действие выполняется, когда вещество полностью покинуло резервуар, до начала нового цикла.
При изменении скорости [код]
Действие выполняется, когда изменяется скорость любого (входящего или исходящего) потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальные переменные:  double inrate - текущая скорость во входном порте
                          double outrate - текущая скорость в выходном порте

Функции

double amount() - Возвращает объем вещества, содержащийся в данный момент в резервуаре.

boolean isEmpty() - Проверяет, не пуст ли резервуар. Возвращает true, если резервуар пуст, и false в противном случае.

boolean isEmptying() - Проверяет, закончена ли обработка вещества, открыт ли выход, закрыт ли вход и не пуст ли еще резервуар.

boolean isFilling() - Проверяет, наполняется ли резервуар, т.е. вход открыт, выход закрыт и объем ниже требуемой Вместимости.

boolean isProcessing() - Проверяет, обрабатывается ли сейчас вещество, т.е. вход и выход закрыты и выполняется задержка для обработки.

void forceProcessing() - Если вызвать функцию у частично заполненного (не пустого) резервуара в процессе его наполнения, то впускной клапан будет перекрыт и сразу запустится процесс обработки вещества (вне зависимости от объема вещества в резервуаре). Не влияет на вместимость или время обработки. Выполняет действие При наполнении, как если бы резервуар был наполнен. Если вызвать функцию во время обработки вещества или опустошения резервуара, ничего не произойдет. 

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

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

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

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

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

boolean updateCapacity() - Принудительно обновляет данные о вместимости резервуара, т.е. заново рассчитывает значение динамического параметра Вместимость. Как правило, значение вместимости пересчитывается, когда вещество полностью покинуло резервуар. С помощью этой функции вы можете обновить данные о вместимости резервуара в любое время. При этом новое значение вместимости не должно превосходить значение количества жидкости, содержащейся в резервуаре в данный момент.

Object getBatch(int index)Возвращает партию с указанным индексом (index). Партия с индексом 0 - это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 - это партия, находящаяся ближе всего ко входу в резервуар.

double getBatchSize(int index)Возвращает размер партии с указанным индексом (index). Партия с индексом 0 - это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 - это партия, находящаяся ближе всего ко входу в резервуар.

double getBatchSize(int index, AmountUnits units)Возвращает размер партии с указанным индексом (index) в указанных единицах измерения объемаПартия с индексом 0 - это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 - это партия, находящаяся ближе всего ко входу в резервуар.

Color getBatchColor(int index) - Возвращает цвет партии с указанным индексом. Если цвет исходящей партии отличается от цвета входящей партии, текущий цвет подвергается линейной интерполяции в ходе обработки так, чтобы соответствовать степени выполнения обработки. Чтобы получить исходный цвет партии, вызовите функцию:
<имя элемента processTank>.tank.getBatchColor()
.

double updateOutputBatch() - Выполняет принудительный пересчет выходной партии и ее цвета в соответствии с текущими заданными параметрами.

double getBatchOffset(int index)Возвращает сумму размеров всех партий, расположенных ближе к выходу, чем партия с указанным индексом index (то есть, под данной партией). Функция предназначена для использования в случае создания нестандартной анимации для блока.

int numberOfBatches() - Возвращает количество партий, который в данный момент находятся в резервуаре, включая возможные партии с нулевым размером.

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

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

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

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

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

double remainingTime() - Возвращает оставшееся время задержки (в секундах), если вещество в данный момент задержано (в процессе "обработки"). В остальных случаях возвращает 0.

double remainingTime(TimeUnits units) - Возвращает оставшееся время задержки (в указанных единицах измерения времени), если вещество в данный момент задерживается (в процессе "обработки"). В остальных случаях возвращает 0. Например, remainingTime(MINUTE) возвращает оставшееся время задержки в минутах.

Порты

in
Входной порт.
out
Выходной порт.