Моделирует клапан на трубе, по которой транспортируется жидкость. Ограничивает скорость потока или полностью блокирует поток.
Клапан задает максимальную скорость потока, которая применяется, когда он открыт. Когда же клапан закрывается, то скорость потока становится равной нулю. Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9. Если при перерасчете скорость потока опускается ниже значения RATE_TOLERANCE, она приводится к нулю.
Вы можете открывать и закрывать клапан во время выполнения модели вызовом функций open(), close() и toggle(). Вы также можете вызвать функцию dispense(), чтобы клапан пропустил только определенное количество жидкости, а потом закрылся. Кроме того, вы можете определить произвольно повторяющееся действие, которое будет выполняться каждый раз, когда партия вещества прошла через клапан.
Блок Valve является блоком с нулевой вместимостью, он не содержит вещество внутри.
Как и любой другой блок, блок Valve позволяет вам реагировать на новые партии, появляющиеся на входе.
Демо модель: Valve
double amountPassed() - Возвращает общий объем вещества, прошедший через клапан, начиная с запуска процесса моделирования.
double amountPassed(AmountUnits units) - Возвращает общий объем вещества (в указанных единицах измерения объема), прошедший через клапан, начиная с запуска процесса.
double currentRate() - Возвращает текущую скорость потока вещества на выходе из блока.
double currentRate(FlowRateUnits units) - Возвращает текущую скорость потока вещества (в указанных единицах измерения скорости) на выходе из блока.
double averageRate() - Возвращает среднюю скорость вещества во время прохода через клапан за все время работы. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено текущее значение скорости.
double averageRate(FlowRateUnits units) - Возвращает среднюю скорость (в указанных единицах измерения скорости) вещества во время прохода через клапан за все время работы. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено текущее значение скорости.
boolean isClosed() - Проверяет, закрыт ли в данный момент клапан. Возвращает true, если клапан закрыт, и false, если он открыт.
open() - Открывает клапан. Устанавливает максимальную скорость равной скорости, заданной в параметре.
close() - Закрывает клапан (устанавливает значение максимальной скорости в ноль).
toggle() - Переключает состояние клапана между "открыт" и "закрыт". Если клапан в данный момент закрыт, то вызов данной функции открывает его, и наоборот.
double dispense(double amount) - Открывает клапан, если он закрыт, позволяя заданному объему жидкости пройти через него, и затем закрывает и выполняет действие При завершении выдачи. Заданное значение amount не может быть меньше значения Utils.TOLERANCE. Если выбрана опция Повторяющееся действие для порции, то в момент, когда заданный объем жидкости проходит через клапан и перед тем, как клапан снова закрывается, выполняется действие При выдаче порции. Если время выполнения этих двух действий совпадает, то порядок их вызова не детерминирован.
double dispense(double amount, AmountUnits units) - Открывает клапан, если он закрыт, позволяя заданному объему жидкости (в указанных единицах измерения объема) пройти через него, и затем закрывает и выполняет действие При завершении выдачи. Заданное значение amount не может быть меньше значения Utils.TOLERANCE. Если выбрана опция Повторяющееся действие для порции, то в момент, когда заданный объем жидкости проходит через клапан и перед тем, как клапан снова закрывается, выполняется действие При выдаче порции. Если время выполнения этих двух действий совпадает, то порядок их вызова не детерминирован.
double amountDispensedSoFar() - Если в данный момент происходит выдача, инициированная вызовом функции dispense(), этот метод возвращает количество вещества (в заданных единицах, если указано), которое было выдано на данный момент. В других случаях, возвращает 0.
double amountDispensedSoFar(AmountUnits units) - Если в данный момент происходит выдача, инициированная вызовом функции dispense(), этот метод возвращает количество вещества (в заданных единицах измерения объема), которое было выдано на данный момент. В других случаях, возвращает 0.
double amountPassedInPortion() - Когда установлена опция Повторяющееся действие для скорости, данная функция возвращает объем жидкости, прошедшей через клапан в текущей порции. Этот объем меньше, чем заданный в параметре Размер порции. Если действие не установлено, то данная функция возвращает 0.
double amountPassedInPortion(AmountUnits units) - Когда установлена опция Повторяющееся действие для скорости, данная функция возвращает объем жидкости (в заданных единицах измерения объема), прошедшей через клапан в текущей порции. Этот объем меньше, чем заданный в параметре Размер порции. Если действие не установлено, то данная функция возвращает 0.
double utilization() - Возвращает текущее значение использования пропускной способности клапана, то есть текущая входная скорость, деленная на максимальную скорость, когда открыт. Если клапан Изначально закрыт, текущая максимальная скорость равна 0 или не ограничена, то возвращает 0.
double utilizationTotal() - Возвращает среднее значение использования пропускной способности клапана за все время работы, то есть общий объем вещества, прошедшего через клапан, деленный на максимальный объем, который мог пройти, зависит от (возможно переменной) скорости, когда открыт и временем, когда закрыт. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено мгновенное значение использования клапана. Если скорость, когда открыт, хоть раз была выставлена неограниченной, функция вернет ноль.
void resetStats() - Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.