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

Tank

Резервуар, контейнер для жидкости или объемного вещества, имеющий неограниченный объем, вход наверху и выход внизу. Может содержать некоторое количество начальной жидкости (в том числе неограниченное количество). Когда резервуар не наполнен полностью, то его содержимое всегда находится внизу, и наполняется сверху. Не наполненный резервуар может принимать поток жидкости любой скорости. Когда резервуар наполнен, то скорость потока на его входе ограничена скоростью потока на его выходе (но не наоборот). Когда резервуар пустой, то скорость потока на его выходе ограничена скоростью потока на его входе.

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

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

Блок Tank также может служить в качестве источника жидкости или в качестве контейнера с неограниченным объемом для удаления жидкости из системы.

И хотя в реальном резервуаре разные жидкости могут смешиваться, блок Tank сохраняет порядок входящих партий и передает их на выход согласно правилу FIFO (в порядке поступления в очередь). Можно указать, чтобы выходная партия была той же самой, что и начальная входная партия, установленная в режим партии по умолчанию или в режим другой партии. Вы также можете изменить партию, изначально содержащуюся в резервуаре, если она есть.

Блок Tank позволяет вам определять действия, которые будут выполняться, когда резервуар наполняется, опустошается, или когда объем превышает либо становится ниже заданного уровня. Кроме того, вы можете реагировать на новую партию, прибывающую на вход или на выход блока.

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

Параметры

Вместимость
Максимальный объем вещества, который резервуар может содержать. Заданное значение не может быть меньше значения Utils.TOLERANCE. Неограниченную вместимость можно задать, прописав infinityв поле данного свойства.
Синтаксис: double capacity
Начальный объем
Объем вещества, изначально содержащийся в резервуаре. Заданное значение не может быть меньше значения Utils.TOLERANCE. Неограниченный начальный объем можно задать, прописав infinity в поле данного свойства.
Синтаксис: double initialAmount
Скорость на выходе ограничена
Если данная опция выбрана (значение true), то вы можете задавать другой верхний предел скорости потока на выходе резервуара.
Синтаксис: boolean limitRateOut
Максимальная скорость на выходе
[Параметр виден и применяется только в том случае, если установлена опция Скорость на выходе ограничена]
Здесь вы можете задать другой верхний предел скорости потока на выходе резервуара. Значение по умолчанию составляет 10 куб. метров/сек.
Синтаксис: double maxRateOut
Установить новое значение во время выполнения: set_maxRateOut(новое значение)
Другой приоритет
Если данная опция выбрана (значение true), то приоритет потока на выходе резервуара будет установлен в Приоритет выходного потока, в противном случае приоритет будет равен 1. Приоритет влияет на LP решатель, когда он стремится до максимума увеличить количество вещества, проходящего через систему.
Синтаксис: boolean customPriority
Установить новое значение во время выполнения: set_customPriority(новое значение)
Приоритет выходного потока
[Параметр виден и применяется только в том случае, если установлена опция Другой приоритет]
Здесь вы можете задать другой приоритет скорости потока на выходе резервуара в общей диаграмме процесса. Должен быть положительным целым числом.
Синтаксис: int priorityOutCustom
Установить новое значение во время выполнения: set_priorityOutCustom(новое значение)
Другая начальная партия
Если данный параметр установлен, то жидкость, изначально содержащаяся в резервуаре, будет иметь тип Начальная партия. Если параметр не установлен, то жидкость будет иметь тип: BatchTypes.DEFAULT_BATCH.
Синтаксис: boolean customInitialBatch
Установить новое значение во время выполнения: set_customInitialBatch(новое значение)
Начальная партия
[Параметр виден и применяется только в том случае, если установлена опция Другая начальная партия]
Определяет партию, изначально содержащуюся в резервуаре.
Синтаксис: Object initialBatch
Установить новое значение во время выполнения: set_initialBatch(новое значение)
Изменить цвет партии
Если данная опция установлена, то цвет начальной партии определяется параметром Цвет партии (см.ниже), в противном случае применяются стандартные цвета.
Синтаксис: boolean customInitialBatchColor Установить новое значение во время выполнения: set_customInitialBatchColor(новое значение)
Цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии]
Здесь вы можете задать цвет начальной партии.
Тип величины: Color
Локальная переменная: Object batch — начальная партия
Партия на выходе
Определяет выходную партию резервуара. Одно из следующих:
  • Та же, что и вошла в блок — та же, что и начальная партия, вошедшая в блок
  • По умолчанию — установлена в партию по умолчанию BatchTypes.DEFAULT_BATCH
  • Другая — определяется параметром Партия на выходе(см. ниже)
Получить значение: modeOutputBatch
Установить новое значение во время выполнения: set_modeOutputBatch(новое значение)
Допустимые значения:
Tank.OUTPUT_BATCH_IN1 — Та же, что и вошла в блок
Tank.OUTPUT_BATCH_DEFAULT — По умолчанию
Tank.OUTPUT_BATCH_CUSTOM — Другая
Партия
[Параметр виден и применяется только в том случае, если Партия на выходе: Другая]
Здесь вы можете задать, какую партию нужно создать на выходе из резервуара.
Тип величины: Object
Локальная переменная: Object originalbatch — начальная партия
Изменить цвет партии
[Параметр виден и применяется только в том случае, если Партия на выходе: Другая]
Если данная опция установлена, то цвет выходной партии будет определяться параметром Цвет партии(см. ниже), в противном случае будут применяться стандартные цвета.
Синтаксис: boolean customOutputBatchColor
Поменять значение во время выполнения: set_customOutputBatchColor(новое значение)
Цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии]
Здесь вы можете задать цвет выходной партии.
Тип величины: Color
Локальная переменная: Object batch — начальная партия

Анимация

Резервуар
Здесь можно указать имя элемента разметки пространства Резервуар, используемого в качестве фигуры анимации резервуара, заданного этим блоком Tank.
Синтаксис: StorageTank storageTank
Отображать партии в блоке
Если данная опция установлена, то значок блока будет отображать цвет текущей партии.
Синтаксис: boolean showBatchesInFlowchart

Действия

При наполнении
Действие выполняется, когда резервуар полностью наполняется. Если резервуар изначально наполнен, то данное действие не выполняется при запуске процесса моделирования.
При опустошении
Действие выполняется, когда резервуар полностью опустошается. Если резервуар изначально пустой, то данное действие не выполняется при запуске процесса моделирования.
Действие, если выше уровня
Если данная опция установлена (значение true), то вы можете задать действие, которое будет выполняться, когда объем жидкости в резервуаре увеличивается и достигает определенного порога.
Синтаксис: boolean actionOnAbove
Уровень
[Параметр виден и применяется только в том случае, если установлена опция Действие, если выше уровня]
Порог действия Если выше. Заданное значение не может быть меньше значения Utils.TOLERANCE. Если разница между пороговым значением и максимальной вместимостью резервуара меньше значения Utils.TOLERANCE, при запуске модели возникнет ошибка.
Тип величины: double
Если выше
[Параметр виден и применяется только в том случае, если установлена опция Действие, если выше уровня]
Данное действие выполняется, когда объем жидкости в резервуаре увеличивается и достигает порога, указанного в параметре Уровень. Данное действие не выполняется, когда объем жидкости изначально выше или равен данному порогу, или если порог пересекается во время уменьшения количества жидкости.
Локальная переменная: double amount — текущий объем
Действие, если ниже уровня
Если данная опция установлена (значение true), то вы можете задать действие, которое будет выполняться, когда объем жидкости в резервуаре уменьшается и достигает определенного порога.
Синтаксис: boolean actionOnBelow
Уровень
[Параметр виден и применяется только в том случае, если установлена опция Действие, если ниже уровня]
Порог для действия Если ниже. Заданное значение не может меньше значения Utils.TOLERANCE. Если разница между пороговым значением и 0 окажется меньше значения Utils.TOLERANCE, при запуске модели возникнет ошибка.
Тип величины: double
Если ниже
[Параметр виден и применяется только в том случае, если установлена опция Действие, если ниже уровня]
Данное действие выполняется, когда объем жидкости в резервуаре уменьшается и достигает порога, указанного в параметре Уровень. Данное действие не выполняется, когда объем жидкости изначально ниже или равен данному порогу, или если порог пересекается во время увеличения количества жидкости.
Локальная переменная: double amount — текущий объем
При новой партии на входе
Действие выполняется, когда новая партия прибывает на вход резервуара. Эта партия не обязательно начнет поступать в блок.
Локальная переменная: Object batch — партия
При новой партии на выходе
Действие выполняется, когда новая партия достигает выхода резервуара, даже если выходная партия установлена в режим партии по умолчанию или другой партии.
Локальная переменная: Object batch — партия
При изменении скорости
Действие выполняется, когда изменяется скорость любого (входящего или исходящего) потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальные переменные:
double inrate — текущая скорость во входном порте
double outrate — текущая скорость в выходном порте

Функции

Количество вещества
Функция Описание
double amount() Возвращает объем жидкости, содержащийся в данный момент в резервуаре (суммарный объем всех партий жидкости). Если объем меньше значения Utils.TOLERANCE, возвращает 0.
double amount(AmountUnits units) Возвращает объем жидкости (в указанных единицах измерения объема) содержащийся в данный момент в резервуаре (суммарный объем всех партий жидкости). Если объем меньше значения значения Utils.TOLERANCE, возвращает 0.
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 isFull() Проверяет, наполнен ли резервуар, т.е. равен ли объем жидкости, находящейся в резервуаре, его вместимости. Возвращает true, если резервуар наполнен, и false, если он не наполнен.
boolean isEmpty() Проверяет, является ли резервуар пустым. Возвращает true, если резервуар пустой, и false, если он не пустой. В пустом резервуаре может находиться партия нулевого размера в том случае, если она прибыла на вход, но не поступила в резервуар.
Скорость потока
Функция Описание
double currentRateIn() Возвращает текущую скорость потока вещества на входе.
double currentRateIn(FlowRateUnits units) Возвращает текущую скорость потока вещества (в указанных единицах измерения скорости) на входе.
double currentRateOut() Возвращает текущую скорость потока вещества на выходе.
double currentRateOut(FlowRateUnits units) Возвращает текущую скорость потока вещества (в указанных единицах измерения скорости) на выходе.
Партии
Функция Описание
int numberOfBatches() Возвращает количество партий, находящихся в данный момент в резервуаре, включая возможные партии с нулевой длиной.
Object getBatch(int index) Возвращает партию с указанным индексом (index). Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 — это партия, находящаяся ближе всего ко входу в резервуар.
Color getBatchColor(int index) Возвращает цвет партии с указанным индексом.
double getBatchSize(int index) Возвращает размер партии с указанным индексом (index). Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 — это партия, находящаяся ближе всего ко входу в резервуар.
double getBatchSize(int index, AmountUnits units) Возвращает размер партии с указанным индексом (index) в указанных единицах измерения объема. Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 — это партия, находящаяся ближе всего ко входу в резервуар.
double updateOutputBatch() Выполняет принудительный пересчет выходной партии и ее цвета в соответствии с текущими заданными параметрами.
double getBatchOffset(int index) Возвращает сумму размеров всех партий, расположенных ближе к выходу, чем партия с указанным индексом index (то есть, под данной партией). Функция предназначена для использования в случае создания нестандартной анимации для блока.
Использование резервуара
Функция Описание
double utilization() Возвращает долю использованного на данный момент объема резервуара т.е. capacity. Если начальное количество вещества в резервуаре, а также вместимость резервуара заданы как неограниченные, эта функция вернет значение 1.
double utilizationTotal() Возвращает среднее значение использования резервуара за все время работы, т.е. полное мгновенное использование, деленное на (вместимость, умноженная на время работы).
Сброс статистики
Функция Описание
void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную в его портах.

Порты

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