Россия
В статье рассматривается подход к разработке математических моделей технологических процессов на языке программирования Python. В работе представлен обзор модулей «Thermo» и «Chemica»l с описанием их основных функций и возможностей. Эти модули предназначены для расчета физико-химических свойств различных систем, а также для моделирования фазовых состояний сложных многокомпонентных смесей. С помощью данных модулей был создан цифровой химический справочник свойств индивидуальных веществ в виде Bot-программы на базе мессенджера Telegram
математическое моделирование, химическая технология, язык программирования Python, физико-химические свойства, модуль «Thermo», модуль «Chemicals», Telegram
Значение точного расчета физико-химических свойств веществ и их смесей невозможно переоценить. Эти свойства играют решающую роль при моделировании и оптимизации химико-технологических процессов. Предоставляя информацию о поведении веществ в различных условиях, эти свойства позволяют инженерам проектировать и управлять технологическими процессами эффективно и с получением продуктов требуемого качества [1].
Некоторые из ключевых физико-химических свойств, которые используются при моделировании процессов, включают плотность, вязкость, теплопроводность, теплоемкость и поверхностное натяжение. Эти свойства, которые могут широко варьироваться в зависимости от температуры, давления и состава системы, должны быть точно рассчитаны, чтобы можно было предсказать поведение веществ в различных условиях процесса.
Для решения этой задачи обычно используются специализированные программные продукты, такие как Aspen Hysys, Aspen Plus, PRO/II, ChemCAD и UniSim Design. Эти программные пакеты предоставляют мощные инструменты для создания и моделирования химических процессов и часто включают в себя базы данных термодинамических и транспортных свойств обычных веществ и смесей. Однако высокая стоимость этих программных продуктов может сделать их недоступными для решения небольших или нестандартных задач.
Для этих случаев можно использовать математические пакеты и языки программирования, такие как Python, для самостоятельного составления математической модели процесса. Python – это универсальный язык программирования, который широко используется в научных вычислениях и технике. Он предлагает широкий набор библиотек и модулей, которые можно использовать для решения различных задач, в том числе для расчета физико-химических свойств веществ и их смесей.
Двумя широко используемыми модулями Python для расчета термодинамических и транспортных свойств веществ являются модули «Chemicals» и «Thermo». Модуль «Chemicals» обеспечивает доступ к обширной базе данных различных термодинамических констант и параметров веществ и содержит основные методы расчета физико-химических свойств отдельных компонентов в газообразном, жидком и твердом состояниях. Все свойства рассчитываются модулем с учетом заданных условий: температуры и давления.
Модуль «Thermo», включающий в себя модуль «Chemicals», предоставляет еще более мощный набор функций и методов для расчета свойств отдельных компонентов и их смесей во всех возможных агрегатных состояниях. Он также позволяет проводить расчеты фазового равновесия в многокомпонентных системах с использованием численных методов. Модуль предлагает несколько термодинамических моделей для описания поведения жидких смесей, включая модели коэффициентов активности, такие как Wilson, NRTL и UNIFAC, и уравнения состояния, такие как Peng-Robinson и Soave-Redlich-Kwong для расчета плотностей неидельных газов и оценки фугитивностей компонентов.
Модули «Thermo» и «Chemicals» полезны не только для расчета физико-химических свойств веществ и их смесей, но и для оценки эффективности химических процессов. Моделируя различные условия и параметры процесса, инженеры могут оптимизировать конструкцию и работу процесса, снизить затраты и повысить качество и безопасность продукции.
На базе этих модулей нами был создан цифровой химический справочник для расчета основных физико-химических свойств жидких и газообразных индивидуальных веществ при различных условиях. Для более удобного и повсеместного доступа к программе расчета не только с персонального компьютера, но даже и через мобильные устройства, справочник был оформлен в виде Bot-программы в популярном на текущий момент мессенджере Telegram.
Оболочка Bot-программы, задача которой состояла в приеме запроса от пользователя (название вещества, температуры и давления) и выдаче расчетного ответа (набора значений различных физико-химических свойств), была создана на базе модуля «Aiogram». Модуль «Aiogram» содержит основные классы и методы для работы с TelegramBot API. Он позволяет выстроит наиболее удобный диалог между пользователем и Bot-программой.
Проблема программной реализации цифрового химического справочника на базе вышеназванных модулей заключалась в том, что модуль «Aiogram» изначально был создан на основе принципов асинхронного программирования. Поэтому создаваемая на его основе Bot-программа также должна быть ассинхронной. В то же время модули «Thermo» и «Chemicals» построены на принципах классического синхронного программирования. Непосредственное обращение асинхронной Bot-программы к синхронным модулям «Thermo» и «Chemicals» при запросе от одного пользователя приводило бы к невозможности обработки запросов от других пользователей до момента окончательного ответа первому пользователю. С учетом того, что классы и методы модулей «Thermo» и «Chemicals» являются достаточно ресурсоемкими, то прямое обращение Bot-программы к этим модулям сильно снизила бы производительность обработки запросов пользователей.
Решение проблемы было найдено путем выделения синхронного расчетного блока программы, который использует модули «Thermo» и «Chemicals», в отдельное серверное приложение c API. Для создания такого серверного приложения был использован фреймворк «Flask». Данный фреймворк по мере необходимости автоматически создает несколько экземпляров расчетного блока, позволяя тем самым выполнять параллельную обработку запросов от нескольких пользователей даже при условии синхронности работы программы.
На рисунке 1 представлена схема обработки запроса пользователя цифровым химическим справочником.
После формирования пользователем в Telegram-клиенте запроса о требуемом веществе или условиях расчета свойств (температуры и давления) данный запрос через сервер Telegram передается на сторонний сервер, где установлен цифровой химический справочник. Первично запрос обрабатывается асинхронной Bot-оболочкой. Диалог с Bot-оболочкой заключается в последовательном опросе пользователя и приёме от него параметров расчета: названия вещества для нахождения его в базе данных модуля «Chemical», значения температуры и ее единицы измерения, значения давления и его единицы измерения.
Рисунок 1 – Схема обработки запроса пользователя
Для запоминания состояния диалога и значений параметров расчета, которые пользователь последовательно вводит, Bot-оболочка сохраняет все направляемые параметры запроса в базе данных Redis. После получения от пользователя всех необходимых для расчета данных Bot-оболочка формирует асинхронный get-запрос синхронному экземпляру расчетного блока на базе фреймворка Flask и до получения ответа от него переключается на работу по обработке запросов от других пользователей.
После отработки экземпляра расчетного блока и проведения расчетов физико-химических свойств Flask передаёт ответ Bot-оболочке в виде набора данных. Bot-оболочка оформляет расчетные данные в виде удобного для отображения списка значений физико-химических свойств и через сервер Telegram возвращает ответ пользователю.
В настоящий момент времени данный цифровой химической справочник находится в свободном доступе по URL-ссылке: https://t.me/PropCalculationBot или через QR-код, представленный на рисунке 2.
Рисунок 2 – QR-код ссылки на цифровой химический справочник
Точный расчет физико-химических свойств веществ имеет решающее значение для успешного моделирования и оптимизации процессов. Модули «Chemicals» и «Thermo» дают возможность выполнять расчеты термодинамических и транспортных свойств веществ как в составе математических моделей, написанных на языке программирования Python, так и в виде отдельного цифрового химического справочника.
1. Poling, B.E. The Properties of Gas and Liquids / B. E. Poling, J. M. Prausnitz, J. P. O’Connel. 5th ed. - NY: McGraw-Hill, 2003. - 803 p.