Fluid Source

Создает поток. Является стандартным начальным блоком в диаграмме процесса Библиотеки моделирования потоков.

Может работать либо как источник с неограниченным объемом, либо как источник с ограниченным начальным объемом, который может наполняться заново вызовом функции inject(). Данный блок задает ограничение на скорость выходного потока, реальная скорость не может превосходить это значение.

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

Тип партии, создаваемой блоком FluidSource, может быть изменен. Для того, чтобы изменить тип партии динамически в режиме неограниченного объема, вам следует изменить параметр Партия (вызвать функцию set_customBatch()), при этом параметр Другая партия должен быть выбран. В режиме ограниченного объема вы можете задавать тип и цвет партии в качестве дополнительных аргументов функции inject().

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

Параметры

Максимальная скорость
Если данная опция выбрана, то блок не задает ограничение скорости на выходе (ограничение должно быть задано другими блоками дальше по потоку).
Синтаксис: boolean maxRate
Установить новое значение во время выполнения: set_maxRate(true или false)
Скорость
[Параметр виден и применяется только в том случае, если установлена опция Максимальная скорость] Максимальная (желаемая) скорость потока на выходе.
Синтаксис: double rate
Установить новое значение во время выполнения: set_rate(новая величина)
Режим
Здесь вы можете определить, будет ли блок FluidSource иметь возможность создавать поток вещества неограниченного объема (опция Объем не ограничен) или ограниченного объема, который, однако, может быть наполнен заново путем вызова функции inject()(опция Ограниченный объем, inject() для пополнения).
Синтаксис: boolean infiniteCapacity
Установить новое значение во время выполнения: set_infiniteCapacity(true или false)
Начальный объем
[Параметр виден и применяется только в том случае, если опция Режим установлена в Ограниченный объем, inject() для пополнения] Объем жидкости, изначально содержащийся в блоке в режиме ограниченного объема.
Синтаксис: double initialAmount
Установить новое значение во время выполнения: set_initialAmount(новая величина)
Другой приоритет
Если эта опция установлена (значение true), то приоритет выходного потока будет определяться параметром Приоритет выходного потока (см. ниже), в противном случае приоритет будет равен 1. Приоритет влияет на LP решатель, когда он стремится увеличить до максимума количество вещества, проходящего через систему.
Синтаксис: boolean customPriority
Установить новое значение во время выполнения: set_customPriority(true или false)
Приоритет выходного потока
[Параметр виден и применяется только в том случае, если установлена опция Другой приоритет] Здесь вы можете задать другой приоритет потока на выходе из данного блока в общей диаграмме процесса. Значение приоритета должно быть положительным числом.
Синтаксис: int priorityOutCustom
Установить новое значение во время выполнения: set_priorityOutCustom(новая величина)
Другая партия
Если данная опция выбрана (значение true), то выходная партия будет определяться параметром Партия (см. ниже). Если же нет, то выходная партия будет той же самой, что и входная.
Синтаксис: boolean modeBatchCustom
Установить новое значение во время выполнения: set_modeBatchCustom(true или false)
Партия
[Параметр виден и применяется только в том случае, если установлена опция Другая партия] Определяет выходную партию. Применяется в обоих режимах, но в режиме ограниченного объема может быть переопределен функцией inject().
Синтаксис: Object customBatch
Установить новое значение во время выполнения: set_customBatch(новая величина)
Изменить цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Другая партия] Если данная опция установлена, то цвет партии будет определяться параметром Цвет партии (см. ниже), в противном случае будут применяться стандартные цвета. Применяется в обоих режимах, но в режиме ограниченного объема может быть переопределен функцией inject().
Синтаксис: boolean customBatchColor
Установить новое значение во время выполнения: set_customBatchColor(true или false)
Цвет партии [динамический]
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии] Здесь вы можете задать цвет выходной партии. Применяется в обоих режимах, но в режиме ограниченного объема может быть переопределен функцией inject().
Тип величины: Color
Локальная переменная: Object batch - выходная партия
Анимация
Резервуар
Здесь можно указать имя элемента разметки пространства Резервуар, используемого в качестве фигуры анимации блока FluidSource (как в 2D, так и в 3D). Анимация резервуара будет доступна, если в настройках блока FluidSource отметить флажком пункт Другая партия и указать значение в поле Партия.
Синтаксис: StorageTank storageTank
Отображать партии в блоке
Если данная опция установлена, то значок блока будет отображать цвет текущей партии.
Синтаксис: boolean showBatchesInFlowchart
Действия
При опустошении [код]
[Применяется только в том случае, если опция Режим установлена в Ограниченный объем, inject() для пополнения] Действие выполняется в режиме ограниченного объема, когда на выходе больше не осталось жидкости.
При новой партии на выходе [код]
[Применяется только в том случае, если опция Режим установлена в Ограниченный объем, inject() для пополнения] Действие выполняется в режиме ограниченного объема, когда новая партия поступает на выход блока.
Локальная переменная: Object batch - партия
При изменении скорости [код]
Действие выполняется, когда изменяется скорость потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальная переменная:  double outrate - текущая скорость потока в выходном порте

Функции

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

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

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

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

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

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

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

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

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

Color getBatchColor(int index) - Возвращает цвет партии с указанным индексом.

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

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

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

double inject(double amount, Object batch, Color color)- В режиме ограниченного объема добавляет партию заданного типа и цвета в выходную очередь блока. В режиме неограниченного объема не делает ничего.

double inject(double amount, AmountUnits units, Object batch, Color color) - В режиме ограниченного объема добавляет партию (в заданных единицах измерения объема) заданного типа и цвета в выходную очередь блока. В режиме неограниченного объема не делает ничего.

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

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

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

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

Порты

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