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

Fluid Merge

Объединяет два потока в один. Скорость выходного потока равна сумме скоростей входных потоков.

Может работать в трех режимах:

  • Нейтральный — в режиме Нейтральный ни один из входов не получает приоритет, и не накладываются никакие дополнительные ограничения. В случае, если выход может принять больше, чем сумму максимальных скоростей входных потоков, то значения обеих скоростей входных потоков доводятся до максимума. Если нет, то "квоты" скоростей входных потоков распределяются не детерминировано.
  • Пропорциональный — в режиме Пропорциональный данный блок накладывает дополнительное ограничение: скорость потока на входе 1 / Доля 1 = скорость потока на входе 2 / Доля 2, поэтому величины скоростей входных потоков зависят друг от друга, так же как и от допустимой величины скорости выходного потока.
  • Приоритет — в режиме Приоритет блок FluidMerge стремится максимально увеличить скорость одного из входных потоков, и другой входной поток получит тот приоритет, который останется. Иногда, чтобы избежать конфликта приоритетов, вам может понадобиться изменить значения приоритетов (путем присвоения им целочисленных значений) и тем самым достичь желаемых значений приоритетов.

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

Скорость потока на входе в блок не ограничена. Скорость потока на выходе из блока может быть ограничена. Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9. Если при перерасчете скорость потока опускается ниже значения RATE_TOLERANCE, она приводится к нулю.

Выходная партия блока FluidMerge может быть той же самой, что и партия на выбранном входе, либо той же самой, что на приоритетном входе, либо заданной по умолчанию, либо другой партией, заданной в параметрах этого блока. Последняя опция применяется, например, когда с помощью данного блока моделируется смешивание двух разных веществ, что приводит к образованию третьего вещества. Действия При новой партии... могут применяться для того, чтобы изменять режим и/или приоритеты в зависимости от входных партий. Если выходная партия задана та же самая, что на одном из входов, при этом из-за отсутствия потока на входе это партия с нулевой длиной, то партия на выходе будет такая же, как партия на другом входе.

FluidMerge является блоком с нулевой вместимостью, он не содержит вещество внутри.

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

Параметры

Режим
Режим смешивания. Один из следующих:
Нейтральный  — ни один из входов не получает приоритет
Пропорциональный  — скорости входных потоков должны подчиняться правилам пропорций
Приоритет  — один из входов обладает приоритетом над другим
Получить значение: mode
Установить новое значение во время выполнения: set_mode(новое значение)
Допустимые значения:
FluidMerge.SPLITMERGE_NEUTRAL  — Нейтральный
FluidMerge.SPLITMERGE_PROPORTIONAL  — Пропорциональный
FluidMerge.SPLITMERGE_PRIORITY  — Приоритет
Доля 1
[Данный параметр виден и применяется только в том случае, если Режим: Пропорциональный]
Доля (относительная) скорости потока на входе 1 в режиме Пропорциональный. Если пользователь динамически изменяет значение этого параметра, то выходная партия обновляется в соответствии с текущими значениями параметров.
Синтаксис: double fraction1
Установить новое значение во время выполнения: set_fraction1(новое значение)
Доля 2
[Данный параметр виден и применяется только в том случае, если Режим: Пропорциональный]
Доля (относительная) скорости потока на входе 2 в режиме Пропорциональный. Если пользователь динамически изменяет значение этого параметра, то выходная партия обновляется в соответствии с текущими значениями параметров.
Синтаксис: double fraction2
Установить новое значение во время выполнения: set_fraction2(новое значение)
Другие приоритеты
[Данный параметр виден и применяется только в том случае, если Режим: Приоритет]
Если данная опция выбрана (значение true), то приоритетам входных потоков будут присвоены другие значения. В противном случае им будут присвоены значения 0 и 1. Приоритеты влияют на LP решатель, когда он стремится увеличить до максимума количество вещества, проходящего через систему.
Синтаксис: boolean customPriorities
Поменять значение во время выполнения: set_customPriorities(новое значение)
Приоритет
[Данный параметр виден и применяется только в том случае, если Режим: Приоритет, а также установлена опция Другие приоритеты]
Применяется в режиме приоритетов с приоритетами по умолчанию. Если выбрана опция Вход 1, то вход 1 имеет приоритет над входом 2, в противном случае Вход 2 обладает приоритетом. В результате значения приоритетов будут равны 1 и 0.
Синтаксис: boolean priorityInput1
Поменять значение во время выполнения: set_priorityInput1(новое значение)
Приоритет входа 1
[Данный параметр виден и применяется только в том случае, если Режим: Приоритет, а также установлена опция Другие приоритеты]
Применяется в режиме приоритета с другими приоритетами. Определяет приоритет потока на входе 1 в общей диаграмме процесса. Значение приоритета должно быть неотрицательным целым числом.
Синтаксис: int priorityInput1Custom
Поменять значение во время выполнения: set_priorityInput1Custom(новое значение)
Приоритет входа 2
[Данный параметр виден и применяется только в том случае, если Режим: Приоритет, а также установлена опция Другие приоритеты]
Применяется в режиме приоритета с другими приоритетами. Определяет приоритет потока на входе 2 в общей диаграмме процесса. Значение приоритета должно быть неотрицательным целым числом.
Синтаксис: int priorityInput2Custom
Поменять значение во время выполнения: set_priorityInput2Custom(новое значение)
Партия на выходе
Определяет то, как формируется партия на выходе данного блока. Одно из следующих:
Та же, что на входе 1  — та же, что и партия на входе 1
Та же, что на входе 2  — та же, что и партия на входе 2
Та же, что на приоритетном входе  — та же, что и партия на приоритетном входе (только в режиме приоритета)
По умолчанию  — устанавливается в партию по умолчанию
Другая  — определяется параметром Партия на выходе (см. ниже)
Получить значение: modeBatch
Установить новое значение во время выполнения: set_modeBatch(новое значение)
Допустимые значения:
FluidMerge.OUTPUT_BATCH_IN1  — Та же, что на входе 1
FluidMerge.OUTPUT_BATCH_IN2  — Та же, что на входе 2
FluidMerge.OUTPUT_BATCH_PRIORITY  — Та же, что на приоритетном входе
FluidMerge.OUTPUT_BATCH_DEFAULT  — По умолчанию
FluidMerge.OUTPUT_BATCH_CUSTOM  — Другая
Партия на выходе
[Данный параметр виден и применяется только в том случае, если Партия на выходе: Другая]
Определяет партию, которую нужно создать на выходе. Выполнение данного действия может зависеть от входных партий.
Тип значения: Object
Локальные переменные:
Object batch1  — партия на входе 1
Object batch2  — партия на входе 2
Изменить цвет партии
[Данный параметр виден и применяется только в том случае, если Партия на выходе: Другая]
Если данная опция установлена, то цвет выходной партии будет определяться параметром Цвет партии (см. ниже), в противном случае будет применяться заданный по умолчанию цвет.
Синтаксис: boolean customBatchColor
Установить новое значение во время выполнения: set_customBatchColor(новое значение)
Цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии]
Здесь вы можете задать цвет выходной партии.
Тип значения: Color
Локальная переменная: Object batch — выходная партия
Скорость на выходе ограничена
Если данная опция выбрана (значение true), то вы можете задавать другой верхний предел скорости потока на выходе блока.
Синтаксис: boolean limitRateOut
Поменять значение во время выполнения: set_limitRateOut(новое значение)
Максимальная скорость на выходе
[Параметр виден и применяется только в том случае, если выбрана опция Скорость на выходе ограничена]
Здесь вы можете задать другой верхний предел скорости потока на выходе. Значение по умолчанию составляет 10 куб. метров/сек.
Синтаксис: double maxRateOut
Установить новое значение во время выполнения: set_maxRateOut(новое значение)

Анимация

Отображать партии в блоке
Если эта опция установлена, то значок блока будет отображать цвет текущей партии.
Синтаксис: boolean showBatchesInFlowchart

Действия

При новой партии на входе 1
Действие выполняется, когда новая партия прибывает на вход 1. Эта партия не обязательно начнет поступать в блок.
Локальная переменная: Object batch — партия
При новой партии на входе 2
Действие выполняется, когда новая партия прибывает на вход 2. Эта партия не обязательно начнет поступать в блок.
Локальная переменная: Object batch — партия
При новой партии на выходе
Данное действие выполняется, когда новая партия прибывает на один из двух входов, или когда изменяются параметры Режим, Приоритет либо другие параметры, что может привести (не обязательно) к формированию новой партии на выходе из блока.
Локальная переменная: Object batch — партия
При изменении скорости
Действие выполняется, когда изменяется скорость любого потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальные переменные:
double in1rate — текущая скорость во входном порте in1
double in2rate — текущая скорость во входном порте in2
double outrate — текущая скорость в выходном порте

Функции

Количество вещества
Функция Описание
double amountPassed() Возвращает общий объем вещества, прошедший через выходной порт, начиная с запуска процесса моделирования.
double amountPassed(AmountUnits units) Возвращает общий объем вещества (в заданных единицах измерения объема), прошедший через выходной порт, начиная с запуска процесса моделирования.
Скорость потока
Функция Описание
double currentRate() Возвращает текущую скорость потока вещества на выходе.
double currentRate(FlowRateUnits units) Возвращает текущую скорость потока вещества (в указанных единицах измерения скорости) на выходе.
Выходная партия
Функция Описание
double updateOutputBatch() Выполняет принудительный пересчет выходной партии и ее цвета в соответствии с текущими заданными параметрами.
Сброс статистики
Функция Описание
void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.

Порты

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