AnyLogic
Развернуть
Размер шрифта

Fluid Source

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

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

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

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

Демо-модель: FluidSource Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Параметры

Максимальная скорость
Если данная опция выбрана, то блок не задает ограничение скорости на выходе (ограничение должно быть задано другими блоками дальше по потоку).
Синтаксис: boolean maxRate
Установить новое значение во время выполнения: set_maxRate(новое значение)
Скорость
[Параметр виден и применяется только в том случае, если установлена опция Максимальная скорость]
Максимальная (желаемая) скорость потока на выходе.
Синтаксис: double rate
Установить новое значение во время выполнения: set_rate(новое значение)
Режим
Здесь вы можете определить, будет ли блок FluidSource иметь возможность создавать поток вещества неограниченного объема (опция Объем не ограничен) или ограниченного объема, который, однако, может быть наполнен заново путем вызова функции inject() (опция Ограниченный объем, inject() для пополнения ).
Синтаксис: boolean infiniteCapacity
Установить новое значение во время выполнения: set_infiniteCapacity(новое значение)
Начальный объем
[Параметр виден и применяется только в том случае, если Режим: Ограниченный объем, inject() для пополнения]
Объем жидкости, изначально содержащийся в блоке в режиме ограниченного объема. Заданное значение не может быть меньше значения Utils.TOLERANCE.
Синтаксис: double initialAmount
Установить новое значение во время выполнения: set_initialAmount(новое значение)
Другой приоритет
Если эта опция установлена (значение true), то приоритет выходного потока будет определяться параметром Приоритет выходного потока (см. ниже), в противном случае приоритет будет равен 1. Приоритет влияет на LP решатель, когда он стремится увеличить до максимума количество вещества, проходящего через систему.
Синтаксис: boolean customPriority
Установить новое значение во время выполнения: set_customPriority(новое значение)
Приоритет выходного потока
[Параметр виден и применяется только в том случае, если установлена опция Другой приоритет]
Здесь вы можете задать другой приоритет потока на выходе из данного блока в общей диаграмме процесса. Значение приоритета должно быть положительным числом.
Синтаксис: int priorityOutCustom
Установить новое значение во время выполнения: set_priorityOutCustom(новое значение)
Другая партия
Если данная опция выбрана (значение true), то выходная партия будет определяться параметром Партия (см. ниже). Если же нет, то выходная партия будет той же самой, что и входная.
Синтаксис: boolean modeBatchCustom
Установить новое значение во время выполнения: set_modeBatchCustom(новое значение)
Партия
[Параметр виден и применяется только в том случае, если установлена опция Другая партия]
Определяет выходную партию. Применяется в обоих режимах, но в режиме ограниченного объема может быть переопределен функцией inject().
Синтаксис: Object customBatch
Установить новое значение во время выполнения: set_customBatch(новое значение)
Изменить цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Другая партия]
Если данная опция установлена, то цвет партии будет определяться параметром Цвет партии (см. ниже), в противном случае будут применяться стандартные цвета. Применяется в обоих режимах, но в режиме ограниченного объема может быть переопределен функцией inject().
Синтаксис: boolean customBatchColor
Установить новое значение во время выполнения: set_customBatchColor(новое значение)
Цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии]
Здесь вы можете задать цвет выходной партии. Применяется в обоих режимах, но в режиме ограниченного объема может быть переопределен функцией 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) Возвращает общий объем вещества (в заданных единицах измерения объема), прошедший через выходной порт, начиная с запуска процесса моделирования.
Скорость потока
Функция Описание
double currentRate() Возвращает текущую скорость потока вещества на выходе.
double currentRate(FlowRateUnits units) Возвращает текущую скорость потока вещества (в заданных единицах измерения скорости) на выходе.
Партии
Функция Описание
int numberOfBatches() Возвращает количество партий, находящихся в данный момент в блоке, включая возможные партии с нулевой длиной.
Object getBatch(int index) Возвращает партию с указанным индексом (index). Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара.
double getBatchSize(int index) Возвращает размер партии с указанным индексом (index). Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара.
double getBatchSize(int index, AmountUnits units) Возвращает размер партии (в заданных единицах измерения объема) с указанным индексом (index). Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара.
Color getBatchColor(int index) Возвращает цвет партии с указанным индексом. Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара.
double getBatchOffset(int index) Возвращает сумму размеров всех партий, находящихся ближе к выходу, чем партия с указанным индексом. Функция предназначена для использования в случае создания нестандартной анимации для блока.
Добавление вещества (в режиме ограниченного объема)
Функция Описание
double inject(double amount, Object batch, Color color) В режиме ограниченного объема добавляет партию заданного типа и цвета в выходную очередь блока. В режиме неограниченного объема не делает ничего.
Заданное значение amount не может быть меньше значения Utils.TOLERANCE.
double inject(double amount, AmountUnits units, Object batch, Color color) В режиме ограниченного объема добавляет партию (в заданных единицах измерения объема) заданного типа и цвета в выходную очередь блока. В режиме неограниченного объема не делает ничего.
Заданное значение amount не может быть меньше значения Utils.TOLERANCE.
double inject(double amount, Object batch) В режиме ограниченного объема добавляет партию заданного типа в выходную очередь блока. Цвет партии определяется в соответствии с параметрами блока. В режиме неограниченного объема не выполняет ничего.
Заданное значение amount не может быть меньше значения Utils.TOLERANCE.
double inject(double amount, AmountUnits units, Object batch) В режиме ограниченного объема добавляет партию (в заданных единицах измерения объема) заданного типа в выходную очередь блока. Цвет партии определяется в соответствии с параметрами блока. В режиме неограниченного объема не выполняет ничего.
Заданное значение amount не может быть меньше значения Utils.TOLERANCE.
double inject(double amount) В режиме ограниченного объема добавляет заданный объем вещества (amount) в выходную очередь. Партия и цвет данного объема вещества определяются в соответствии с параметрами блока. В режиме неограниченного объема не выполняет ничего.
Заданное значение amount не может быть меньше значения Utils.TOLERANCE.
double inject(double amount, AmountUnits units) В режиме ограниченного объема добавляет заданный объем вещества (amount) (в заданных единицах измерения объема) в выходную очередь. Партия и ее цвет определяются в соответствии с параметрами блока. В режиме неограниченного объема не выполняет ничего.
Заданное значение amount не может быть меньше значения Utils.TOLERANCE.
Сброс статистики
Функция Описание
void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.

Порты

out
Выходной порт.
Как мы можем улучшить эту статью?