Общая информация

Библиотека Моделирования Потоков позволяет вам моделировать хранение и перенос жидкостей, объемного вещества или множества дискретных элементов, которые вы не хотите моделировать по отдельности.

Библиотека включает в себя такие блоки как Tank, Pipeline, Valve, FluidSource и FluidDispose. Есть также блоки для направления, объединения и разделения потока. Кроме того, имеется блок BulkConveyor, разработанный для моделирования переноса объемных веществ или конденсирующихся летучих веществ. Вы можете найти полный список блоков Библиотеки Моделирования Потоков здесь.

Библиотека Моделирования Потоков взаимодействует с Библиотекой Моделирования Процессов. Она может преобразовывать агенты в партии жидкости, и наоборот.

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

Линейная природа гидродинамики позволяет использовать LP-решатель (для линейного программирования), для того чтобы вычислять максимальную скорость потока жидкости. Решатель вызывается только в определенные моменты изменений, что делает скорость исполнения моделей из Библиотеки Моделирования Потоков намного выше, чем у моделей из Системной Динамики. Вместе с тем, LP вычисления намного более точны, так как в LP решателе не используются временные шаги. Мы рекомендуем использовать Библиотеку Моделирования Потоков в тех случаях, когда система линейна, а Системную Динамику использовать только в том случае, если система является нелинейной, то есть когда в модели присутствуют непрерывные циклы обратной связи или постоянное изменение скорости движения потока жидкости.

Увеличение скоростей потоков до максимума и приоритеты потоков

По умолчанию, данные блоки Библиотеки Моделирования Потоков заставляют LP решатель до максимума увеличить скорости их выходных потоков: FluidSource, AgentToFluid, Tank, и BulkConveyor. Кроме того, блоки FluidMerge и FluidSplit в режиме приоритетов формируют запросы на увеличения скорости потока до максимума на одном из входов или выходов. Это реализуется путем повышения приоритета (коэффициента) скорости движения соответствующего потока в целевой функции линейного программирования. По умолчанию, величина скорости этого потока получает приоритет 1, а всех остальных потоков - приоритет 0.

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

Максимальные и минимальные значения скоростей и уровней

Если значение скорости во время выполнения модели равняется Utils.MAXIMUM_RATE (1.0E10), модель остановится и появится сообщение об ошибке "Flow rate evaluated to the maximum value. You need to set a limit for this rate." Это происходит ввиду того, что максимальная скорость, как правило, не является нормальной величиной, чаще следствием того, что пользователь не указал где-либо ограничение скорости. Чтобы избежать подобной ситуации, необходимо указать ограничение максимальной скорости в свойствах блоков диаграммы процессов.

Единицы измерения

В Библиотеке Моделирования Потоков количество жидкости или сыпучего материала измеряется в единицах двух типов: массы и объема. Используются следующие единицы измерения массы:

И следующие единицы измерения объема:

В рамках одной диаграммы процесса, состоящей из блоков Библиотеки Моделирования Потоков (одной "сети потоков"), необходимо использовать единицы измерения одного типа: либо массы, либо объема. В противном случае, если в одном блоке параметры заданы в единицах измерения массы, а в другом - в единицах измерения объема, при запуске модели возникнет ошибка "Не совпадают единицы измерения".

Во внутренних настройках Библиотека Моделирования Потоков конвертирует любые единицы измерения массы в килограммы и любые единицы измерения объема - в метры кубические. Для внутренних расчетов используются секунды.

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

По тому же принципу любые проверки допусков выполняются в килограммах, метрах кубических, килограммах в секунду и метрах кубических в секунду.

Обработка численных ошибок

В Библиотеке Моделирования Потоков скорости потоков, временные интервалы и другие значения часто рассчитываются заново при помощи линейных формул: объем = скорость потока * временной интервал и т.д. Как следствие, могут возникать численные ошибки. Например, если вместимость резервуара равна 100 м3 и скорость поступающего потока поддерживается на уровне ровно 1 м3 в секунду на протяжении ровно 100 секунд, "буквальная" реализация резервуара могла бы привести тому, что его объем равен, скажем, 100 /- 1e-12 м3. Библиотека Моделирования Потоков по возможности сводит к минимуму последствия от численных ошибок, приводя рассчитываемые величины к необходимым значениям. Для этого используется Utils.TOLERANCE - внутренняя константа, применяемая для всех типов величин в библиотеке.

Константа TOLERANCE используется в следующих важных местах:

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

Для значений скорости в Библиотеке Моделирования Потоков введена соответствующая константа Utils.RATE_TOLERANCE со значением 1.0e-9. Она используется в следующих случаях:

Динамическая взаимоблокировка

Теоретически, при настройке потоков может возникнуть динамическая взаимоблокировка: бесконечная петля событий с нулевым прогрессом по времени. Простейшим примером является пользовательское действие, заданное в поле При изменении скорости какого-либо блока Библиотеки Моделирования Потоков. Это действие вызывает еще один пересчет скорости и, как следствие, еще один вызов действия При изменении скорости. Разумеется, мы рекомендуем не создавать подобные действия. Тем не менее, могут возникать и более сложные ситуации. Например, опустошение резервуара является событием, которое может вызвать перерасчет скорости, а этот перерасчет скорости в свою очередь может переключить резервуар в не опустошенное состояние. Вследствие этого скорости возвращаются к исходному состоянию, а резервуар снова становится пустым. Несмотря на то, что нет универсального решения проблемы динамической взаимоблокировки, мы рекомендуем попробовать настроить нестандартные приоритеты скоростей в блоках Split / Merge, и таким образом стабилизировать систему скоростей.