Перевести страницу на:  
Please select your language to translate the article


You can just close the window to don't translate
Библиотека
ваш профиль

Вернуться к содержанию

Кибернетика и программирование
Правильная ссылка на статью:

Разработка графической оболочки для параллельных расчетов на базе платформы OpenFOAM

Читалов Дмитрий Иванович

Младший научный сотрудник, Южно-Уральский научный центр

456317, Россия, Челябинская область, г. Миасс, ул. Пр. Октября, 31, кв. 44

Chitalov Dmitrii Ivanovich

Junior Researcher, South Ural Scientific Center

456317, Russia, Chelyabinskaya oblast', g. Miass, ul. Pr. Oktyabrya, 31, kv. 44

cdi9@yandex.ru
Калашников Сергей Тимофеевич

кандидат технических наук

Зав. отдела фундаментальных проблем аэрокосмических технологий, Южно-Уральский научный центр

456317, Россия, Челябинская область, г. Миасс, ул. Ильменский Заповедник, 1

Kalashnikov Sergei Timofeevich

PhD in Technical Science

Head Department of Fundamental Problems of Aerospace Technologies, South Ural Scientific Center

456317, Russia, Chelyabinskaya oblast', g. Miass, ul. Il'menskii Zapovednik, 1

src@makeyev.ru

DOI:

10.25136/2644-5522.2019.4.29202

Дата направления статьи в редакцию:

11-03-2019


Дата публикации:

15-12-2019


Аннотация: Графические интерфейсы являются важнейшим элементом человеко-компьютерного взаимодействия. Они обеспечивают формирование входных данные для программ и визуализацию результатов. Коммерческое программное обеспечение преимущественно поставляется со встроенными графическими средствами взаимодействия. При этом некоторые открытые программные решения, в частности, платформа OpenFOAM лишена встроенных средств взаимодействия. Данная проблема сохраняет свою актуальность, поскольку существующие графические интерфейсы имеют недостатки. В настоящей работе представлен поэтапный процесс разработки графической оболочки для реализации взаимодействия пользователя с платформой OpenFOAM – для постановки численных экспериментов применительно к задачам механики сплошных сред (МСС) в режиме параллельного выполнения. Для достижения поставленной цели определен список задач и необходимых инструментов: язык программирования Python 3.5, фреймворк описания элементов интерфейса PyQt5, интегрированная среда разработки PyCharm. Приведены диаграммы, демонстрирующие взаимосвязь модулей программы, и механизм работы программы. Сформулированы результаты разработки и тестирования приложения на примере проекта одной из стандартных задач МСС, входящих в дистрибутив платформы OpenFOAM. Сформулирована научная новизна исследования, в частности: сериализация параметров численного эксперимента с помощью модуля Pickle языка Python и таблиц базы данных в формате SQLite, возможность создания различных версий файлов с параметрами задач МСС, возможность запуска консольных команд с помощью bash-скриптов. Также определена практическая ценность работы и дальнейшие перспективы.


Ключевые слова:

численное моделирование, механика сплошных сред, параллельные вычисления, OpenFOAM, открытое программное обеспечение, графический интерфейс пользователя, язык программирования Python, библиотека PyQt, СУБД SQLite, bash-скриптинг

Abstract: Graphical interfaces are an essential element of human-computer interaction. They provide the formation of input data for programs and visualization of results. Commercial software predominantly comes with integrated graphical communication tools. At the same time, some open-source software solutions, in particular, the OpenFOAM platform, have no built-in interaction tools. This problem remains relevant because existing graphical interfaces have disadvantages. This paper presents a phased process for developing a graphical shell for implementing user interaction with the OpenFOAM platform - for setting up numerical experiments in relation to the tasks of continuum mechanics (MSS) in parallel execution mode. To achieve this goal, a list of tasks and necessary tools is defined: the Python 3.5 programming language, the PyQt5 interface element description framework, and the PyCharm integrated development environment. The diagrams showing the interconnection of the program modules and the mechanism of the program. The results of the development and testing of the application are formulated using the example of a project of one of the standard tasks of the MSS included in the distribution platform platform OpenFOAM. The scientific novelty of the study is formulated, in particular: serialization of the parameters of a numerical experiment using the Python Pickle module and database tables in SQLite format, the ability to create various versions of files with MCC task parameters, the ability to run console commands using bash scripts. The practical value of the work and further prospects are also determined.


Keywords:

numerical simulation, continuum mechanics, parallel computing, OpenFOAM, open source software, graphical user interface, Python programming language, PyQt library, SQLite DBMS, bash-scripting

Введение

Персональный компьютер является неотъемлемым элементом жизни человека. Использование первых вычислительных устройств было сопряжено с большими сложностями из-за отсутствия удобных и понятных средств взаимодействия между пользователем и самим устройством. Первый графический пользовательский интерфейс (GUI) был разработан в 1973 году в рамках проекта Xerox Alto – родоначальника всех персональных компьютеров. Предложенная графическая оболочка отличалась простотой, но уже предусматривала наличие меню, кнопок, примитивных окон и даже курсора мыши с возможностью выделения объектов. С появлением в 1981 году ОС Xerox Star существующий GUI был усовершенствован до версии, которая во многом идентична существующим [1].

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

Ежегодно создается множество новых программных средств для решения различных задач, в том числе проведения вычислений, но не все из них обладают удобным и понятным интерфейсом пользователя, что требует от специалистов наличия специальных навыков и необходимости расходования значительных ресурсов рабочего времени на освоение интерфейсов. Одним из таких программных приложений является платформа OpenFOAM [2], не предусматривающая наличие GUI. Платформа OpenFOAM является свободно распространяемым инструментарием для проведения расчетов в области механики сплошных сред (МСС) посредством численных методов. При этом создаются цифровые модели, имитирующие процессы (задачи), связанные с такими разделами МСС, как газо- и гидродинамика, механика деформируемого твердого тела и др. Пример численного исследования для задачи МСС представлен в работе [3].

Платформа OpenFOAM успешно зарекомендовала себя в конструкторских и технологических подразделениях предприятий различных отраслей машиностроения: автомобилестроения, двигателестроения, ракетостроения, космического строения. Среди пользователей OpenFOAM представлены крупнейшие гиганты машиностроения: Audi, Volvo, Toyota, Volkswagen, Shell Oil.

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

Альтернативой данному подходу является разработка и использование классического оконного графического интерфейса, благодаря которому процесс численного эксперимента на основе платформы OpenFOAM будет осуществляться с применением окон и элементов управления: кнопок, выпадающих списков, текстовых полей, фреймов и т.д.

Первая версия OpenFOAM была выпущена в 2004 году и первоначально специалисты для взаимодействия с данной платформой использовали только традиционный подход, но позднее ряд иностранных IT-компаний разработали собственные графические оболочки для OpenFOAM. Среди них наибольшую известность получили программные продукты Salome [4], Visual-CFD [5], Helyx-OS [6], которые позволяют выполнять все этапы построения цифровых моделей задач МСС на базе платформы OpemFOAM: препроцессинг, решение, постпроцессинг.

Создание перечисленных GUI для взаимодействия с OpenFOAM вызвало неоднозначную реакцию специалистов. С одной стороны, пользователи получили возможность отказаться от трудоемкого традиционного подхода проведения численного моделирования, а с другой – в каждой из предложенных графических оболочек были обнаружены недостатки, из-за которых не все пользователи оказались готовы к переходу от традиционного подхода к использованию оконного интерфейса. Среди недостатков были отмечены: необходимость оплаты лицензии и консультационных услуг, отсутствие полноценной документации по продуктам. Таким образом, у исследователей сохраняется интерес к вопросу создания графической оболочки для платформы OpenFOAM.

Актуальность проблемы

Перед началом создания оригинального программного продукта авторы проанализировали функциональные возможности и особенности нескольких наиболее известных аналогов. Результаты сравнения приведены в таблице 1.

Таблица 1. GUI для постановки численных экспериментов на базе платформы OpenFOAM

Название

Лицензия

Техническая поддержка

Обучающая

документация

Salome

Свободно-распространяемое ПО

Существует, платная

Предусмотрена

Visual-CFD

Бесплатная версия на 30 дней

Существует, платная

Только базовое описание возможностей

Helyx-OS

Свободно-распространяемое ПО

Существует, платная

Только базовая инструкция для пользователей

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

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

Постановка целей и задач

Первая версия графической оболочки для платформы OpenFOAM была разработана авторами в 2016 г [7]. Она имела ограниченный функционал – возможность использования только применительно к решателю rhoCentralFoam (невязкий сжимаемый поток) платформы OpenFOAM. Кроме того, первая версия не предусматривала выполнение параллельных вычислений.

Цель настоящего исследования состоит в разработке графической оболочки (GUI) для платформы OpenFOAM с возможностью проведения параллельных расчетов (OpenFOAM_decompose_GUI) и с возможностю применения для широкого круга решателей OpenFOAM: icoFoam (несжимаемый ламинарный поток), simpleFoam (стационарный, несжимаемый, турбулентный поток), pisoFoam (нестационарный несжимаемый турбулентный поток), sonicFoam (нестационарный сжимаемый турбулентный поток).

Для реализации поставленной цели авторами изучена официальная документация по OpenFOAM 6.0 и описание решения учебных задач [8, 9]. Описываемая графическая оболочка должна быть реализована в виде отдельного программного приложения и предусматривать выполнение каждого из этапов численного эксперимента с помощью платформы OpenFOAM: препроцессинг (определение и установка параметров задачи МСС), решение (численное моделирование задачи МСС), постпроцессинг (визуализация результатов численного эксперимента). Особенности и примеры решения задач МСС на базе платформы OpenFOAM приведены в работах [10-13]. Для выполнения каждого из этапов численного эксперимента необходимо спроектировать структуру GUI и определить логику его работы.

Структура GUI:

1. Главное окно программы. Должно включать семь интерфейсных блоков: панель управления базовыми настройками численного эксперимента, панель управления подготовкой расчетных сеток, панель управления ходом численного эксперимента, блок дерева расчетного случая, блок редактирования параметров служебных файлов расчетного случая, блок отображения содержимого служебных файлов, панель отображения служебных сообщений.

2. Панель управления базовыми настройками численного эксперимента. Должна содержать: кнопку открытия окна подготовки расчетного случая платформы OpenFOAM, кнопку окна выбора языковой версии интерфейса и кнопку открытия универсального окна для создания файлов с начальными условиями численного эксперимента, т.е. файлов для директории «0» расчетного случая. Окно подготовки расчетного случая должно предусматривать радио-кнопки для выбора нужной опции: создание нового расчетного случая или выбор существующего. Также в окне необходимо предусмотреть поле ввода для указания названия расчетного случая и кнопку для открытия стандартного окна выбора директории расчетного случая. Окно выбора языковой версии интерфейса должно содержать радио-кнопки для выбора языковой версии интерфейса.

3. Панель управления подготовкой моделей сеток. В этой панели необходимо реализовать кнопку открытия окна для указания опций работы с расчетными сетками, кнопку запуска формирования моделей сеток, кнопку запуска отображения результатов. Окно указания опций работы с расчетными сетками должно содержать элементы управления для выбора механизма генерации сетки – импорт внешнего файла, созданного посредством стороннего ПО или создание сетки средствами OpenFOAM (с помощью утилит blockMesh и snappyHexMesh). Механизм построения моделей сеток на основе указанных утилит описан в работах [14-15].

4. Панель управления ходом численного эксперимента. Должна содержать кнопки запуска численного эксперимента, его останова и визуализации итоговых результатов.

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

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

7. Блок отображения содержимого служебных файлов. Реализовать данный блок в виде окна, в котором должно отображаться содержимое каждого служебного файла расчетного случая.

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

9. Блок отображения путей до проекта расчетного случая и файла расчетной сетки (или директории со служебными файлами параметров расчетной сетки).

Логика работы GUI:

1. Возможность подготовки нового расчетного случая и изменение параметров существующего.

2. Возможность генерации моделей сеток на основе msh-файлов, подготовленных посредством сторонних программных продуктов и генерации моделей сеток средствами OpenFOAM – с помощью встроенных утилит blockMesh и snappyHexMesh.

3. Запуск и останов численного эксперимента, визуализация результатов моделирования.

4. Оповещение пользователя о ходе выполнения этапов численного эксперимента.

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

6. Поддержка в интерфейсе программы различных языков.

Выбор инструментария разработки

Разрабатываемая графическая оболочка является программным средством, т.е. набором файлов с программным кодом. Для его написания применяется специальный инструментарий, который включает язык программирования и среду разработки. Разрабатываемый интерфейс предполагается реализовать в виде настольного программного приложения. При этом применяются различные высокоуроневые языки программирования, например, С/C++, Java и Python. Они входят в список наиболее популярных языков программирования по рейтингу TIOBE [16].

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

Для описания элементов графических интерфейсов применяются специализированные фреймворки, например PyQt [18]. Данный фреймворк оптимален для описания внешнего вида интерфейсов настольных программ. Он содержит все необходимые средства для реализации классических оконных интерфейсов с привлекательным дизайном.

Еще одним важным аспектом определения инструментария является выбор среды разработки для написания, отладки и запуска программного кода. В последние годы среди Python-разработчиков пользуется популярностью интегрированная среда разработки PyCharm. Она позволяет для каждого проекта определить нужную версию интерпретатора Python, а также в режиме реального времени установить необходимые пакеты и расширения, в том числе PyQt.

Полный перечень применяемого инструментария представлен в таблице 2. Каждый из инструментов является открытым, т.е. не требует приобретения лицензии. Версия Community среды разработки PyCharm является специальной бесплатной версией с ограниченным, но достаточным для большинства проектов функционалом.

Таблица 2. Список инструментов для разработки приложения

Язык программирования

Фреймворк графических элементов

Среда разработки

Python 3.5

PyQt5

PyCharm 2.4 (Community Edition)

Для использования графической оболочки необходимо соблюдать требования по ПО. Его список приведен в таблице 3.

Таблица 3. Список ПО для работы с графической оболочкой

ОС

Программная среда

Среда визуализации результатов

Linux

OpenFOAM 6.0

ParaView

Среда визуализации результатов ParaView [19] – это специализированная открытая программа, которая предоставляет возможность исследователям выполнять визуализацию (отображение) результатов численного эксперимента.

Структура и логика работы приложения

Приложение OpenFOAM_decompose_GUI реализовано по модульному принципу, в соответствии с которым за реализацию определенной функциональности отвечает определенный блок кода, помещенный в файл с расширением .py (Python-модуль). Набор модулей формирует общую структуру программы. Структура представлена на рис. 1.

Рис. 1. Структура приложения OpenFOAM_decompose_GUI

Исходные коды программы распределены по соответствующим служебным директориям, включенным в главную директорию OpenFOAM_decompose_GUI. За запуск программы отвечает файл run.py. Он содержит инструкции визуализации главного окна и ряд базовых инструкций, описывающих логику работы приложения.

Рис. 2. Логика работы приложения OpenFOAM_decompose_GUI

Результаты исследования

Итогом выполненной авторами исследовательской работы является графическая оболочка OpenFOAM_decompose_GUI для проведения параллельных расчетов в OpenFOAM в рамках моделирования задач МСС в конструкторских и технологических подразделениях машиностроительных предприятий. Параллельные вычисления осуществляются в режиме синхронного выполнения на распределенных ресурсах. При этом сеточная модель и связанные поля разбиваются на отдельные компоненты и распределяются между процессорами (или ядрами процессора) для решения. По завершению параллельного запуска расчетный случай может быть реконструирован для последующей обработки, а также визуализации результатов на базе пакета ParaView. Параллельное вычисление обеспечивает экономию затрат времени на выполнение процесса численного моделирования задачи МСС.

На рис. 3-8 представлены изображения главного окна программы (графического интерфейса пользователя), а также отдельных интерфейсных блоков. Тестирование приложения проведено на базе учебной задачи depthCharge3D, входящей в блок учебных примеров стандартного дистрибутива платформы OpenFOAM.

Рис. 3. Главное окно приложения OpenFOAM_decompose_GUI на этапе работы с окном подготовки расчетного случая OpenFOAM, где: 1-главное окно программы, 2-панель управления базовыми настройками численного эксперимента, 3-панель управления подготовкой расчетных сеток, 4-панель управления ходом численного эксперимента, 5-окно подготовки расчетного случая OpenFOAM.

Рис. 4. Главное окно приложения OpenFOAM_decompose_GUI на этапе работы с окном для указания опций работы с расчетными сетками, где: 6-блок дерева расчетного случая, 7-панель отображения служебных сообщений, 8-окно для указания опций работы с расчетными сетками.

Рис. 5. Главное окно приложения OpenFOAM_decompose_GUI на этапе завершения создания файла blockMeshDict с параметрами расчетной сетки, где: 9-блок отображения путей до директории расчетного случая и файла расчетной сетки, 10-блок редактирования параметров служебных файлов расчетного случая, 11-блок отображения содержимого служебных файлов.

Рис. 6. Главное окно приложения OpenFOAM_decompose_GUI

на этапе завершения генерации расчетной сетки.

Рис. 7. Главное окно приложения OpenFOAM_decompose_GUI

на этапе завершения создания одного из служебных файлов расчетного случая.

Рис. 8. Главное окно приложения OpenFOAM_decompose_GUI

на этапе завершения численного эксперимента и визуализации результатов.

Предложенная авторами программа OpenFOAM_decompose_GUI расширяет исходный код свободно-распространяемой платформы OpenFOAM. Программа является универсальной и может быть внедрена на предприятиях различных отраслей машиностроения. Программа находится в свободном доступе на платформе хостинга IT-проектов GitHub [20]. Приложение может быть протестировано потенциальными специалистами при решении учебных или реальных задач МСС на базе OpenFOAM.

Научная новизна исследования

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

1. Подход создания набора форм для редактирования параметров файлов, соответствующих сеточным моделям, т.е. файлов blockMeshDict и snappyHexMeshDict. В данных файлах параметры сеток разделены по блокам. Каждому блоку соответствует отдельная форма набора. Заполнение форм осуществляется в строгом порядке, причем структура каждой формы зависит от содержимого предыдущей формы. Тем самым упрощается подготовка сеточной модели пользователем.

2. Подход сериализации параметров расчетных сеток. Предложен механизм «консервирования» параметров сеточных моделей в виде набора служебных файлов, где каждый файл содержит параметры сеточной модели, хранящиеся в определенном блоке главного файла сеточной модели, например файла blockMeshDict или snappyHexMeshDict. Благодаря такому подходу параметры сеточной модели “консервируются” и могут быть восстановлены для последующего редактирования.

3. Подход создания таблиц базы данных для файлов параметров расчетного случая. Предложен механизм сохранения параметров задачи МСС, определяемых в рамках моделируемого расчетного случая. Эти параметры записываются в соответствующие файлы расчетного случая, например, в файлы controlDict, thermophysicalProperties, decomposeParDict. Согласно предложенному механизму, для каждого из расчетных случаев создается файл базы данных в формате SQLite, где каждая из таблиц соответствует определенному файлу, т.е. содержит структуру полей и соответствующих им значений (параметров задачи МСС). Благодаря этому механизму, параметры задачи МСС могут быть не только сохранены в базе, но и загружены в соответствующую экранную форму при необходимости их редактирования.

4. Подход генерации bash-скриптов и запуска их в качестве дочерних процессов средствами языка программирования Python [21]. Использование данного подхода позволяет отказаться от привычного ручного запуска консольных команд по подготовке расчетных сеток и проведению численного моделирования на базе платформы OpenFOAM.

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

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

7. Подход реализации возможности создания служебных файлов с различными начальными условиями численного эксперимента. Данный подход позволяет в рамках одного расчетного случая (одной задачи МСС) создать любое количество служебных файлов с начальными параметрами, т.е. у пользователя есть возможность выполнить численное моделирование при различных начальных условиях. Речь идет о файлах директории 0 расчетного случая OpenFOAM: p (давление), T (температура) и U (скорость). Согласно предложенному подходу, пользователь может создать сразу несколько вариантов этих файлов, с различными параметрами.

Практическая значимость исследования

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

Использование созданной авторами программы OpenFOAM_decompose_GUI позволяет заменить традиционный – сложный и затратный по времени подход альтернативным – осуществлять все этапы численного эксперимента в OpenFOAM централизованно, посредством привычного оконного графического интерфейса. Это подход дает ряд преимуществ:

1. Экономия временных затрат. За создание расчетного случая, включая вложенные каталоги и служебные файлы с параметрами задачи МСС отвечает программа. Она же отвечает за запуск утилит препроцессинга, решения и постпроцессинга.

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

3. Упрощение освоения платформы OpenFOAM. Процесс численного моделирования с помощью программы OpenFOAM_decompose_GUI осуществляется по строго определенному алгоритму. Например, пользователь не может запустить расчетный случай на решение, не установив параметры сеточной модели.

Заключение

Человеко-компьютерное взаимодействие – это понятие, которое определяет аппаратные и программные средства, необходимые для обмена данными между человеком и вычислительным устройством. Современные интерфейсы являются неотъемлемым элементом любой программы, системы, платформы. Они используются и в офисной работе, и в процессе производственного цикла, когда специалисту необходимо передать вычислительному устройству некоторые данные и получить результат обработки, в частности на этапе проектирования продукции.

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

Данная платформа функционирует на базе ОС Linux и традиционного графического интерфейса в своем дистрибутиве не имеет. Пользователи вынуждены вручную создавать проекты расчетных случаев, содержащие служебные директории и файлы параметров задач МСС, а также использовать командную строку для управления ходом численного моделирования. Это сложный и затратный по времени подход. В качестве альтернативы предлагается использование специализированных графических оболочек: Salome, Helyx-OS и Visual-CFD. Однако, данный подход не лишен недостатков: не все продукты из названных находятся в свободном доступе, кроме того, предприятия вынуждены оплачивать работу специалистов по технической поддержке и работу консультантов. Таким образом, проблема отсутствия средства взаимодействия с пользователем для OpenFOAM сохраняет свою актуальность.

В настоящей работе представлена оригинальная графическая оболочка для проведения численных исследований на базе OpenFOAM, реализованная с помощью языка программирования Python 3.5 и фреймворка графических элементов PyQt5. Программа позволяет выполнять параллельные вычисления в рамках численного эксперимента, способствуя экономии ресурсов вычислительного устройства и времени проведения численного моделирования. Приложение находится в свободном доступе, обладает интуитивно понятным интерфейсом и не требует оплаты услуг по сопровождению. Программа размещена на сервисе GitHub и может применяться частными коллективами исследователей, а также на предприятиях машиностроения, использующих в работе платформу OpenFOAM.

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

Авторы намерены продолжить работу в выбранном направлении и усовершенствовать текущую версию программы OpenFOAM_decompose_GUI, обеспечив специалистам доступ через графический интерфейс к другим утилитам платформы OpenFOAM в процессе выполнения препроцессинга, решения и постпроцессинга.

Библиография
1. Operating System Interface Design Between 1981-2009 URL: https://www.webdesignerdepot.com/2009/03/operating-system-interface-design-between-1981-2009/ (дата обращения: 25.01.2019).
2. OpenFOAM. The open source CFD toolbox. URL: https://www.openfoam.com/ (дата обращения: 25.01.2019).
3. Etrati, A., & Frigaard, I. A. (2018). Viscosity effects in density-stable miscible displacement flows: Experiments and simulations. Physics of Fluids, 30(12) doi:10.1063/1.5065388.
4. Salome. The Open Source Integration Platform for Numerical Simulation. URL: http://www.salome-platform.org (дата обращения: 25.01.2019).
5. Visual-CFD for OpenFOAM. URL: https://www.esi-group.com/software-solutions/virtual-environment/cfd-multiphysics/visual-cfd-openfoam (дата обращения: 25.01.2019).
6. HELYX-OS. The market leading open-source GUI for OpenFOAM. URL: http://engys.com/products/helyx-os (дата обращения: 25.01.2019).
7. Читалов Д.И., Меркулов Е.С., Калашников С.Т. Разработка графического интерфейса пользователя для программного комплекса OpenFOAM. Программная инженерия, вып. 12, 2016 г., стр. 568-574. DOI: 10.17587/prin.7.568-574. doi: 10.17586/prin.7.568-574.
8. OpenFOAM. User Guide. URL: http://foam.sourceforge.net/docs/Guides-a4/OpenFOAMUserGuide-A4.pdf (дата обращения: 25.01.2019).
9. OpenFOAM. Tutorial Guide. URL: https://www.openfoam.com/ documentation/tutorial-guide/index.php (дата обращения: 25.01.2019).
10. Galindo-Lopez, S., Salehi, F., Cleary, M. J., Masri, A. R., Neuber, G., Stein, O. T. (2018). A stochastic multiple mapping conditioning computational model in OpenFOAM for turbulent combustion. Computers and Fluids, 172, 410-425. doi:10.1016/j.compfluid.2018.03.083.
11. Kyriazis, N., Koukouvinis, P., & Gavaises, M. (2018). Modelling cavitation during drop impact on solid surfaces. Advances in Colloid and Interface Science, 260, 46-64. doi:10.1016/j.cis.2018.08.004.
12. H. Al-Jelawy, S. Kaczmarczyk, D. AlKhafaji, S. Mirhadizadeh, R. Lewis and M. Cross, "A Computational Investigation of a Turbulent Flow over a Backward Facing Step with OpenFOAM," 2016 9th International Conference on Developments in eSystems Engineering (DeSE), Liverpool, 2016, pp. 301-307. doi: 10.1109/DeSE.2016.47.
13. Mohseni, M., Esperanca, P. T., & Sphaier, S. H. (2018). Numerical study of wave run-up on a fixed and vertical surface-piercing cylinder subjected to regular, non-breaking waves using OpenFOAM. Applied Ocean Research, 79, 228-252. doi:10.1016/j.apor.2018.08.003.
14. Читалов Д.И., Калашников С.Т. Разработка приложения для подготовки расчетных сеток с градуирующими и изогнутыми краями для программной среды OpenFOAM. Системы и средства информатики. 2018. Т. 28. №4. стр. 122-135. doi: 10.14357/08696527180412.
15. Читалов Д.И., Калашников С.Т. Разработка приложения для подготовки расчетных сеток посредством утилиты snappyHexMesh программной среды OpenFOAM. Программные продукты и системы. 2018. Т. 31. № 4. стр. 715-722. doi: 10.15827/0236-235X.124.715-722.
16. TIOBE index for January 2019. URL: https://www.tiobe.com/tiobe-index/ (дата обращения: 25.01.2019).
17. Python 3.5 documentation. URL: https://docs.python.org/3.5/ (дата обращения: 25.01.2019).
18. PyQt5 Reference Guide. URL: http://pyqt.sourceforge.net/Docs/PyQt5/ (дата обращения: 25.01.2019).
19. ParaView. URL: https://www.paraview.org/ (дата обращения: 25.01.2019).
20. OpenFOAM_decompose_GUI. Available at: https://github.com/DmitryChitalov/OpenFOAM_decompose_GUI (дата обращения: 25.01.2019).
21. Advanced bash-scripting guide. URL: https://www.tldp.org/LDP/abs/html/ (дата обращения: 25.01.2019).
References
1. Operating System Interface Design Between 1981-2009 URL: https://www.webdesignerdepot.com/2009/03/operating-system-interface-design-between-1981-2009/ (data obrashcheniya: 25.01.2019).
2. OpenFOAM. The open source CFD toolbox. URL: https://www.openfoam.com/ (data obrashcheniya: 25.01.2019).
3. Etrati, A., & Frigaard, I. A. (2018). Viscosity effects in density-stable miscible displacement flows: Experiments and simulations. Physics of Fluids, 30(12) doi:10.1063/1.5065388.
4. Salome. The Open Source Integration Platform for Numerical Simulation. URL: http://www.salome-platform.org (data obrashcheniya: 25.01.2019).
5. Visual-CFD for OpenFOAM. URL: https://www.esi-group.com/software-solutions/virtual-environment/cfd-multiphysics/visual-cfd-openfoam (data obrashcheniya: 25.01.2019).
6. HELYX-OS. The market leading open-source GUI for OpenFOAM. URL: http://engys.com/products/helyx-os (data obrashcheniya: 25.01.2019).
7. Chitalov D.I., Merkulov E.S., Kalashnikov S.T. Razrabotka graficheskogo interfeisa pol'zovatelya dlya programmnogo kompleksa OpenFOAM. Programmnaya inzheneriya, vyp. 12, 2016 g., str. 568-574. DOI: 10.17587/prin.7.568-574. doi: 10.17586/prin.7.568-574.
8. OpenFOAM. User Guide. URL: http://foam.sourceforge.net/docs/Guides-a4/OpenFOAMUserGuide-A4.pdf (data obrashcheniya: 25.01.2019).
9. OpenFOAM. Tutorial Guide. URL: https://www.openfoam.com/ documentation/tutorial-guide/index.php (data obrashcheniya: 25.01.2019).
10. Galindo-Lopez, S., Salehi, F., Cleary, M. J., Masri, A. R., Neuber, G., Stein, O. T. (2018). A stochastic multiple mapping conditioning computational model in OpenFOAM for turbulent combustion. Computers and Fluids, 172, 410-425. doi:10.1016/j.compfluid.2018.03.083.
11. Kyriazis, N., Koukouvinis, P., & Gavaises, M. (2018). Modelling cavitation during drop impact on solid surfaces. Advances in Colloid and Interface Science, 260, 46-64. doi:10.1016/j.cis.2018.08.004.
12. H. Al-Jelawy, S. Kaczmarczyk, D. AlKhafaji, S. Mirhadizadeh, R. Lewis and M. Cross, "A Computational Investigation of a Turbulent Flow over a Backward Facing Step with OpenFOAM," 2016 9th International Conference on Developments in eSystems Engineering (DeSE), Liverpool, 2016, pp. 301-307. doi: 10.1109/DeSE.2016.47.
13. Mohseni, M., Esperanca, P. T., & Sphaier, S. H. (2018). Numerical study of wave run-up on a fixed and vertical surface-piercing cylinder subjected to regular, non-breaking waves using OpenFOAM. Applied Ocean Research, 79, 228-252. doi:10.1016/j.apor.2018.08.003.
14. Chitalov D.I., Kalashnikov S.T. Razrabotka prilozheniya dlya podgotovki raschetnykh setok s graduiruyushchimi i izognutymi krayami dlya programmnoi sredy OpenFOAM. Sistemy i sredstva informatiki. 2018. T. 28. №4. str. 122-135. doi: 10.14357/08696527180412.
15. Chitalov D.I., Kalashnikov S.T. Razrabotka prilozheniya dlya podgotovki raschetnykh setok posredstvom utility snappyHexMesh programmnoi sredy OpenFOAM. Programmnye produkty i sistemy. 2018. T. 31. № 4. str. 715-722. doi: 10.15827/0236-235X.124.715-722.
16. TIOBE index for January 2019. URL: https://www.tiobe.com/tiobe-index/ (data obrashcheniya: 25.01.2019).
17. Python 3.5 documentation. URL: https://docs.python.org/3.5/ (data obrashcheniya: 25.01.2019).
18. PyQt5 Reference Guide. URL: http://pyqt.sourceforge.net/Docs/PyQt5/ (data obrashcheniya: 25.01.2019).
19. ParaView. URL: https://www.paraview.org/ (data obrashcheniya: 25.01.2019).
20. OpenFOAM_decompose_GUI. Available at: https://github.com/DmitryChitalov/OpenFOAM_decompose_GUI (data obrashcheniya: 25.01.2019).
21. Advanced bash-scripting guide. URL: https://www.tldp.org/LDP/abs/html/ (data obrashcheniya: 25.01.2019).

Результаты процедуры рецензирования статьи

В связи с политикой двойного слепого рецензирования личность рецензента не раскрывается.
Со списком рецензентов издательства можно ознакомиться здесь.

Предмет исследования – разработка графического пользовательского интерфейса для проведения расчётов и численных экспериментов в области механики сплошных сред на платформе OpenFOAM.

Методология исследования основана на сочетании теоретического и эмпирического подходов с применением методов анализа, сравнения, программирования, обобщения, синтеза.

Актуальность исследования обусловлена широким распространением численного эксперимента, имитационного моделировании в современных исследованиях и разработках (в том числе области механики сплошных сред) и, соответственно, необходимостью изучения и совершенствования соответствующих программных средств, включая графический пользовательский интерфейс для проведения расчётов на платформе OpenFOAM.

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

Стиль изложения научный. Статья написана русским литературным языком.

Структура рукописи включает следующие разделы: Введение (использование вычислительных устройств, первый графический пользовательский интерфейс (GUI), особенности проектирования программного средства для реализации взаимодействия человека и компьютера, платформа OpenFOAM для проведения расчётов в области механики сплошных сред, разработка и использование классического оконного графического интерфейса на основе платформы OpenFOAM, графические оболочки для OpenFOAM), Актуальность проблемы (функциональные возможности и особенности известных аналогов GUI для постановки численных экспериментов на базе платформы OpenFOAM), Постановка целей и задач (разработка графической оболочки (GUI) для платформы OpenFOAM с возможностью проведения параллельных расчетов (OpenFOAM_decompose_GUI) для широкого круга решателей – icoFoam, simpleFoam, pisoFoam, sonicFoam, структура GUI, логика работы GUI), Выбор инструментария разработки (С/C++, Java и Pythonе, язык Python, специализированный Фреймворк PyQt, интегрированная среда разработки PyCharm), Структура и логика работы приложения (приложение OpenFOAM_decompose_GUI, модульный принцип, структура приложения, исходные коды программы, служебные директории, логика работы приложения OpenFOAM_decompose_GUI), Результаты исследования (графическая оболочка OpenFOAM_decompose_GUI для проведения параллельных расчетов в OpenFOAM, главное окно приложения, платформа хостинга IT-проектов GitHub), Научная новизна исследования (создание набора форм для редактирования параметров файлов, соответствующих сеточным моделям, сериализация параметров расчётных сеток, создание таблиц базы данных для файлов параметров расчётного случая, генерация bash-скриптов и запуск их в качестве дочерних процессов, установка валидаторов для проверки типа вводимых данных, проверка комплектности служебных файлов расчётного случая, реализация возможности создания служебных файлов с различными начальными условиями численного эксперимента), Практическая значимость исследования (экономия временных затрат, минимизация ошибок, упрощение освоения платформы OpenFOAM), Заключение (выводы), Библиография.

Разделы «Введение», «Актуальность проблемы», «Постановка целей и задач» могут быть объединены. Материла разделов Научная новизна исследования, Практическая значимость исследования» можно кратко изложить в Заключении. При этом вместо «исследования» желательно использовать термин «разработка».

Текст включает три таблицы, восемь рисунков. Данные таблицы 2 могут быть представлены в виде текста. Содержимое рисунков не отображается. Нумерация подписей удобнее для каждого рисунка по отдельности.

Содержание в целом соответствует названию. Следует уделить больше внимания в основном тексте и в выводах выполнению параллельных расчётов.

Библиография включает 21 источник отечественных и зарубежных авторов – научные статьи, материалы научных мероприятий, Интернет-ресурсы. Библиографические описания некоторых источников нуждаются в корректировке в соответствии с ГОСТ и требованиями редакции, например:
1. Operating System Interface Design Between 1981–2009. – URL: https://www.webdesignerdepot.com/2009/03/operating-system-interface-design-between-1981-2009 (date of access: 25.01.2019).
3. Etrati A., Frigaard I. A. Viscosity effects in density-stable miscible displacement flows: Experiments and simulations // Physics of Fluids. 2018. Vol. 30. № 12.
7. Читалов Д. И., Меркулов Е. С., Калашников С. Т. Разработка графического интерфейса пользователя для программного комплекса OpenFOAM // Программная инженерия. 2016. Вып. 12. С. 568–574.
12. A Computational Investigation of a Turbulent Flow over a Backward Facing Step with OpenFOAM / H. Al-Jelawy, S. Kaczmarczyk, D. AlKhafaji et al. // 9th International Conference on Developments in eSystems Engineering (DeSE). Liverpool, 2016. P. 301–307.

Апелляция к оппонентам (Etrati A., Frigaard I. A., Galindo-Lopez S., Salehi F., Cleary M. J., Masri A. R., Neuber G., Stein O. T., Kyriazis N., Koukouvinis P., Gavaises M., Al-Jelawy H., Kaczmarczyk S., AlKhafaji D., Mirhadizadeh S., Lewis R., Cross M.. Mohseni M., Esperanca P. T., Sphaier S. H. и др.) имеет место.

Аббревиатуру ПО при первом упоминании нужно привести полностью.

В целом рукопись соответствует основным требования, предъявляемым к научным статьям. Материал представляет интерес для читательской аудитории и после доработки (в первую очередь в части представления графического материала) может быть опубликован в журналах «Программные системы и вычислительные методы» или «Кибернетика и программирование» (рубрика «Методы, языки и модели человеко-машинного взаимодействия», «Программные комплексы компьютерной реализации численных методов и математических моделей на их основе»).