Транспортирует объемные или конденсирующиеся летучие вещества из одной точки в другую. По сравнению с трубой Pipeline, допускает образование зазоров и участков с различной "плотностью". Скорость потока на входе конвейера не обязательно равна скорости потока на его выходе. Конвейер транспортирует вещества с определенной максимальной скоростью. При транспортировке скорость выходного потока равняется "плотности" партии вещества, находящегося на выходе конвейера, помноженной на скорость конвейера. В то же время, входной поток создает на входе участок с плотностью, равняющейся скорости входного потока, поделенной на скорость конвейера. В случае, если последующий блок не может принять выходной поток с данного конвейера, то скорость конвейера корректируется так, чтобы уменьшить скорость потока на его выходе.
Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9. Если при перерасчете скорость потока опускается ниже значения RATE_TOLERANCE, она приводится к нулю.
"Плотность" вещества, т.е. объем вещества на единицу длины конвейера, ограничена. На максимальной скорости конвейера скорость потока на входе не может быть выше заданного значения, следовательно, максимальная плотность есть максимальная скорость потока на входе, поделенная на максимальную скорость конвейера. Если реальная скорость конвейера ниже (из-за ограничений на скорость выходного потока), то предельное значение максимальной скорости потока на входе уменьшается пропорционально.
Вы можете динамически изменять скорость конвейера, останавливать или перезапускать его. Вы можете получать доступ к содержимому конвейера, используя его функции. Конвейер воспринимает участки с различной плотностью как разные партии, даже если они будут являться партиями одного типа. Блок BulkConveyor позволяет вам определять действия, связанные с максимальным наполнением конвейера, и с новыми партиями, прибывающими на вход и на выход конвейера.
Демо модель: BulkConveyor
double getActualSpeed() - Возвращает текущую реальную скорость конвейера, которая является меньшей либо равной параметру Скорость.
double getActualSpeed(SpeedUnits units) - Возвращает текущую реальную скорость конвейера (в указанных единицах измерения скорости) которая является меньшей либо равной параметру Скорость.
stop() - Останавливает конвейер (устанавливает параметр stopped в значение true, при этом сохраняя величину параметра Скорость).
go() - Запускает конвейер (устанавливает параметр stopped в значение false, не изменяя параметр Скорость).
double amount() - Возвращает объем вещества, находящегося в данный момент на конвейере.
double amount(AmountUnits units) - Возвращает объем вещества (в указанных единицах измерения объема), находящийся на конвейере.
double amountPassedIn() - Возвращает общий объем вещества, прошедшего через вход конвейера, начиная с запуска процесса моделирования.
double amountPassedIn(AmountUnits units) - Возвращает общий объем вещества (в указанных единицах измерения объема), прошедшего через вход конвейера, начиная с запуска процесса моделирования.
double amountPassedOut() - Возвращает общий объем вещества, прошедшего через выход конвейера, начиная с запуска процесса моделирования.
double amountPassedOut(AmountUnits units) - Возвращает общий объем вещества (в указанных единицах измерения объема), прошедшего через выход конвейера, начиная с запуска процесса моделирования.
double amountMin() - Возвращает исторический минимум объема вещества на конвейере.
double amountMin(AmountUnits units) - Возвращает исторический минимум объема вещества на конвейере в указанных единицах измерения объема.
double amountMax() - Возвращает исторический максимум объема вещества на конвейере.
double amountMax(AmountUnits units) - Возвращает исторический максимум объема вещества на конвейере в указанных единицах измерения объема.
double amountAverage() - Возвращает средний объем вещества на конвейере за все время работы.
double amountAverage(AmountUnits units) - Возвращает средний объем вещества на конвейере за все время работы в указанных единицах измерения объема.
boolean isEmpty()- Проверяет, является ли конвейер пустым. Заметим, что в пустом конвейере все же может находиться партия нулевого размера и без зазоров в том случае, если она прибыла на вход, но не поступила в конвейер.
double utilization() - Возвращает долю использованного на данный момент объема конвейера, то есть текущая скорость входного потока, деленная на максимальную входную скорость потока на максимальной (= желаемой) Скорости. Если текущая максимальная скорость потока равна 0, то возвращает 0.
double utilizationTotal() - Возвращает среднее значение использования конвейера за все время работы, то есть общий объем вещества, которое прошло через входной порт конвейера, деленное на максимальный общий объем, который мог пройти на максимальной входной скорости потока. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено мгновенное значение использования конвейера.
double currentRateIn() - Возвращает текущую скорость вещества на входе конвейера.
double currentRateIn(FlowRateUnits units) - Возвращает текущую скорость вещества (в указанных единицах измерения скорости) на входе конвейера.
double currentRateOut() - Возвращает текущую скорость вещества на выходе конвейера.
double currentRateOut(FlowRateUnits units) - Возвращает текущую скорость вещества (в указанных единицах измерения скорости) на выходе конвейера.
double averageRateIn() - Возвращает среднее значение скорости на входе в конвейер за все время работы. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено мгновенное значение скорости конвейера.
double averageRateIn(FlowRateUnits units) - Возвращает среднее значение скорости (в указанных единицах измерения скорости) на входе в конвейер за все время работы. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено мгновенное значение скорости конвейера.
void resetStats() - Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.
int numberOfBatches() - Возвращает количество партий, находящихся в данный момент в конвейере, включая возможные партии с нулевой длиной и зазоры. Две соседние партии с разной плотностью обрабатываются конвейером как разные партии, даже если они являются партиями одинакового типа.
Object getBatch(int index) - Возвращает партию (которая может оказаться зазором) с указанным индексом index. Партия с индексом 0 - это партия, находящаяся на выходе конвейера, а партия с индексом numberOfBatches()-1 - это последняя партия, являющаяся ближайшей ко входу в конвейер. Зазоры представлены в виде партий с типом = null.
double getBatchSize(int index) - Возвращает размер партии с указанным индексом. Размер зазоров равняется нулю.
double getBatchLength(int index) - Возвращает длину (занимаемое пространство) партии с указанным индексом.
double getBatchDensity(int index) - Возвращает плотность (объем вещества на единицу длины конвейера) партии с указанным индексом. Плотность зазоров равняется нулю.