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

Разработка приложения для подготовки расчетных сеток посредством утилиты snappyHexMesh программной среды OpenFOAM Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
840
187
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГРАФИЧЕСКИЙ ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС / РАСЧЕТНЫЕ СЕТКИ ИЗ ШЕСТИГРАННИКОВ И РАЗДЕЛЕННЫХ ШЕСТИГРАННИКОВ / OPENFOAM / УТИЛИТА BLOCKMESH / УТИЛИТА SNAPPYHEXMESH / ЯЗЫК ПРОГРАММИРОВАНИЯ PYTHON / БИБ-ЛИОТЕКА PYQT4 / ОТКРЫТОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / ЧИСЛЕННОЕ МОДЕЛИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Читалов Д.И., Калашников С.Т.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Читалов Д.И., Калашников С.Т.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The paper describes an application with a graphical user interface for preparing computational meshes that contain hexahedra and split-hexahedra from triangulated surface geometries using the OpenFOAM software environment, and the application development process. The paper presents the existing paid and open software tools used to simplify the problem of preparing such computational meshes. The authors determine their limitations and relevance of the indicated problem and the necessity of developing a new application for preparing meshes for OpenFOAM SE. The authors have made a list of tasks to implement the development. They have studied the operating principle of OpenFOAM SE utility responsible for the mentioned type of CM generation. The determined list of necessary tools for program development includes a programming language of application logic, a library that provides implementation of interface elements, and the development environment. The authors indicate the software required to use the developed application. There are diagrams that describe the application structure, the algorithm of user''s work with application. The paper also determines some difficulties in algorithm implementation and program logic and proposes the ways to solve them. The application has been tested on the training task included in of OpenFOAM SE. The authors summarize the results of the conducted research, evaluate the practical importance of the conducted research work and the created software application, possible prospects of the research. The paper provides a web resource that contains the developed application, which is freely available, for testing and practical using.

Текст научной работы на тему «Разработка приложения для подготовки расчетных сеток посредством утилиты snappyHexMesh программной среды OpenFOAM»

УДК 004.512 Дата подачи статьи: 19.04.18

Б01: 10.15827/0236-235Х.031.4.715-722 2018. Т. 31. № 4. С. 715-722

Разработка приложения для подготовки расчетных, сеток посредством утилиты зпарруИехШезН программной среды ОрепТОАШ

Д.И. Читалов 1, младший научный сотрудник, cdi9@yandex.ru С.Т. Калашников 1, к.т.н.., зав. отделом, src@makeyev.ru

1 Южно-Уральский научный центр, г. Миасс, Ильменский заповедник, 45631 7, Россия

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

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

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

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

Ключевые слова: графический пользовательский интерфейс, расчетные сетки из шестигранников и разделенных шестигранников, OpenFOAM, утилита blockMesh, утилита snappyHexMesh, язык программирования Python, библиотека PyQt4, открытое программное обеспечение, численное моделирование.

Численное моделирование в области механики сплошных сред (МСС) позволяет эффективно исследовать закономерности протекания процессов, связанных с ее основными разделами, прежде всего с аэрогидродинамикой и механикой деформируемого твердого тела. При этом могут использоваться различные пакеты прикладных программ. Часть из них распространяется на коммерческой основе (ANSYS, ТЕСИС, ESI GROUP), а часть относится к так называемому свободно распространяемому ПО. В области численного моделирования задач МСС широкое распространение и популярность получила программная среда (ПС) OpenFOAM [1, 2] с открытым исходным кодом.

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

ПС OpenFOAM - предобработку, решение, постобработку. При этом от пользователя требуется знание широкого перечня консольных команд и обозначений параметров задач МСС в ПС OpenFOAM.

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

Над созданием графической оболочки для ПС OpenFOAM работают не только компании, но и независимые коллективы исследователей, преимуще-

ственно иностранных [7]. Использование их разработок отечественными специалистами связано с трудностями, аналогичными указанным выше: отсутствие русифицированного интерфейса и необходимость приобретения самого продукта и услуг по его обслуживанию.

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

Первый этап решения поставленной задачи представлен в работе [8], содержащей описание результатов разработки базовой версии оболочки для решателя rhoCentralFoam ПС OpenFOAM. Данная графическая оболочка обеспечивает программную подготовку расчетного случая к решению, запуск процесса решения и визуализацию результатов на базе пакета интерактивной визуализации научных исследований в сфере МСС ParaView [9].

Процесс подготовки РС относится к этапу предобработки численного моделирования. От качества подготовленной РС зависят верность и точность результатов численного эксперимента. В работе [8] предусмотрена только возможность импорта готовых РС, созданных с помощью стороннего ПО. При этом в ПС OpenFOAM реализованы собственные механизмы (утилиты) для генерации РС. Одним из типов параметрических сеток, генерация которых предусмотрена в ПС Open-FOAM, является трехмерная сеточная модель, состоящая из шестигранных блоков и разделенных шестигранников, формируемая утилитой snap-pyHexMesh на основе геометрий триангулированной поверхности. Настоящая статья посвящена особенностям разработки приложения с графической оболочкой, обеспечивающего централизованное выполнение всех шагов по подготовке данного типа РС.

В качестве объекта исследования в данном случае выступает процесс подготовки РС, состоящих из шестигранных блоков и разделенных шестигранников, генерируемых утилитой snappyHex-Mesh на базе геометрий триангулированной поверхности для постановки численных экспериментов посредством ПС OpenFOAM. Авторами настоящей работы исследованы принцип работы данной утилиты, а также необходимые для ее выполнения служебные файлы и содержащиеся в них параметры РС. Изучены официальное учебное пособие [10] и руководство пользователя [11] по ПС OpenFOAM, находящиеся в открытом доступе.

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

- реализовать стартовое окно программы с возможностью выбора опции создания новой РС или выбора созданной РС для редактирования;

- реализовать основное окно приложения с несколькими интерфейсными блоками: панелью управления, блоком подготовки исходных данных для РС, блоком отображения результатов и панелью вывода служебной информации;

- в блоке подготовки исходных данных обеспечить отображение окна с интерфейсными элементами управления для обеспечения возможности указания исходных параметров сетки;

- обеспечить элементы управления системой защиты от неверных действий пользователя, привязать к элементам управления систему всплывающих подсказок;

- в блоке отображения результатов реализовать окно представления результатов сформированного файла с исходными параметрами РС, а также результатов выполнения процессов генерации и визуализации сетки;

- в панели вывода служебной информации разработать систему оповещения пользователя о статусе выполняемых им действий (корректное, нейтральное, с ошибками);

- реализовать возможность отображения созданной сетки с помощью пакета визуализации научных исследований ParaView.

Анализ объекта исследования

Утилита snappyHexMesh обеспечивает автоматическое формирование трехмерных параметрических сеток, состоящих из простых и разделенных шестигранников, на базе геометрий триангулированной поверхности. При этом сетка формируется для прямоугольной расчетной области, которая окружает объект, представленный в виде три-по-верхности. Объект в данном случае может относиться к одному из разделов МСС и представляет собой файл (или набор файлов) с расширением .stl или .obj.

На основе анализа документации по ПС Open-FOAM [10, 11] и стандартного комплекса учебных задач, входящих в дистрибутив ПС OpenFOAM, авторами выявлены следующие особенности выполнения утилиты snappyHexMesh, которые представляют важность для разработки графической оболочки.

1. На первом шаге работы с утилитой пользователю необходимо описать моделируемый объект в виде файлов геометрий три-поверхности и сохранить файлы в поддиректории constant/triSurface соответствующего расчетного случая. Моделирование объекта в виде набора STL-файлов осуществляется с помощью специализированных 3D-про-грамм.

2. На втором шаге осуществляется подготовка фоновой шестигранной сетки, определяющей характеристики расчетной области и свойства сетки на базовом уровне. Для выполнения данной задачи в ПС OpenFOAM предусмотрена встроенная утилита blockMesh.

3. Создать файл исходных параметров РС snap-pyHexMeshDict и заполнить его по методологии, представленной в учебном пособии по ПС Open-FOAM [10]. Все параметры, содержащиеся в данном файле, делятся на несколько блоков, каждый из которых отвечает за описание определенной группы свойств сетки (см. таблицу).

Название и характеристика разделов файла snappyHexMeshDict

Name and characteristics of snappyHexMeshDict file sections

Каждый из приведенных в таблице разделов, содержащих определенный набор параметров РС, содержит также дополнительные подразделы, которые подробно описаны в учебных материалах [10, 11].

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

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

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

Несмотря на наличие обширного перечня высокоуровневых языков программирования (ВЯП), например, C++ и Java, в которых реализованы все необходимые средства для создания полноценных программных решений, среди разработчиков большой популярностью пользуется ВЯП Python. На основе данного языка программирования реализована логика работы многих современных десктоп-ных и веб-приложений. В ВЯП Python встроены многочисленные структуры данных, предусмотрена поддержка списков, словарей, кортежей. Кроме того, разработчики могут при создании собственных приложений использовать возможности встроенных библиотек, а также устанавливать и подключать дополнительные расширения. Стоит также отметить простоту изучения данного ВЯП.

Перечисленными достоинствами обусловлен выбор языка программирования Python (версии 3.4) в качестве основной технологии реализации логики работы приложений. При этом элементы графического интерфейса предложено реализовать за счет подключения библиотеки PyQt4 и использования соответствующих ей программных инструкций. Библиотека PyQt4 показала свою эффективность при проектировании десктопных программ на базе ВЯП Python. Установка ВЯП Python 3.4 и библиотеки PyQt4 не требует приобретения лицензии и не представляет сложностей для разработчиков. Теоретические основы разработки программных средств на базе связки инструментария Python 3.4 и PyQt4 изучены авторами с помощью учебных материалов [12, 13].

Разработку предложено провести в интегрированной среде IDLE, обеспечивающей возможности редактирования, запуска и отладки программных приложений, созданных с помощью ВЯП Python. Поскольку ПС OpenFOAM функционирует на компьютерах под управлением ОС Linux, для работы с данной ПС и с приложением snappyHexMesh_ generator для подготовки РС, разработка которого описывается в настоящей статье, на компьютерах пользователей должна быть установлена данная ОС. В качестве дополнительного ПО также требуется наличие установленного пакета ParaView для отображения результатов численного моделирования задач МСС.

Название блока параметров Описание блока параметров

castellatedMesh Переключатель включения опции генерации зубчатой сетки

snap Переключатель запуска процесса привязки к поверхности

doLayers Переключатель включения поверхностных слоев

mergeTolerance Величина допуска для граничной рамки базовой сетки

writeFlags Дополнительные опции управления генерацией сетки

geometry Блок используемых геометрий и их параметров

castellatedMeshC ontrols Блок свойств зубчатой сетки

snapControls Блок параметров определения привязки к поверхности

addLayers Controls Блок параметров управления добавлением слоев

meshQuality Controls Блок параметров, управляющих качеством сетки

Структура программы

Приложение snappyHexMesh_generator состоит из набора служебных директорий и файлов, содержащих программный код. Диаграмма структуры приложения приведена на рисунке 1.

Основная директория программы snappyHex-Mesh_generator содержит шесть вложенных директорий и запускаемый файл run.py. Первая вложенная директория, ../windows/, содержит четыре служебных файла. Первый, prj_window, содержит программный код, отвечающий за отображение и логику работы стартового окна выбора директории проекта (расчетного случая). Второй, lng_win-dow.py, является модулем, обеспечивающим функционирование окна выбора языка интерфейса программы. Следующие два файла директории -bMD_window.py и sHMD_window.py обеспечивают отображение набора форм, каждая из которых соответствует определенному блоку параметров РС из файлов snappyHexMeshDict и blockMeshDict. Наборы форм расположены в директориях ../bMD_forms/ и ../sHMD_forms/ второй вложенной директории ../forms/. Авторами предложен подход, согласно которому программный код каждой из экранных форм хранится в отдельном файле, что упрощает дальнейшую модификацию форм. При этом отдельной утилите генерации РС соответствует отдельная директория с файлами форм.

Поскольку описываемая в настоящей статье программа предусматривает работу с утилитами

blockMesh и snappyHexMesh, для этих утилит подготовлены две директории с наборами экранных форм. Эти формы импортируются в служебные файлы bMD_window.py и sHMD_window.py, которые отвечают за их объединение в набор форм и отображение его в блоке подготовки исходных данных основного окна программы. Кроме того, в служебных файлах bMD_window.py и sHMD_win-dow.py реализованы сериализация (запаковка) введенных параметров в совокупность промежуточных файлов, а также система защиты от неверных действий пользователя. Система всплывающих подсказок реализована отдельно для каждой формы в соответствующем ей файле.

Третья вложенная директория, ../functions/, содержит файлы blockMeshDict_generation и snap-pyHexMeshDict_generation, обеспечивающие генерацию файлов blockMeshDict и snappyHex-MeshDict, содержащих служебные параметры РС. Кроме того, в этой директории хранится файл со служебными функциями msh_functions.py.

Четвертая вложенная директория, ../threads/, содержит файлы, отвечающие за запуск процессов генерации сеток и визуализации результатов.

В пятой вложенной директории, ../matches/, расположены файлы с шаблонами файлов параметров РС blockMeshDict, snappyHexMeshDict и sur-faceFeatureExtractDict. Шестая вложенная директория, ../styles/, содержит служебный файл стилизации элементов графического интерфейса программы.

../sHMD forms/

initial_foim.py geometry_1_form.py geometry_2_form.py castellatedMC_1_form.py castellatedMC_2_form.py

layers_form.py

snapC_form.py

meshQC_form.py

../bMD forms/

initial_form.py vertices_form.py blocks_1_form.py blocks_2_form.py

I

edges_1_form.py edges_2_form.py patches_1_form.py patches_2_form.py mergepatchpairs_form.py

I

../snappyHexMesh generator/

../forms/ run.py

— ../windows/

prj_window.py

lng_window.py

— msh_generation.py

— msh_visualisation.py

—I bMD_window.py —I sHMD_window.py

— ../functions/

blockMeshDict_generation.py

— blockMeshDict

— snappyHexMeshDict_generation.py

— msh_functions.py

. ./matches/

G

../styles/

propertie s_form_style. qs s

surfaceFeatureExtractDict

snappyHexMeshDict

Рис. 1. Файловая структура приложения snappyHexMesh_generator Fig. 1. snappyHexMesh_generator application file structure

Реализация алгоритма работы программы

Основной алгоритмической сложностью, возникшей при разработке приложения snappyHex-Mesh_generator, стала реализация возможности не только создания новых РС, но и редактирования параметров уже существующих сеток. Для решения этой проблемы авторами предложено использовать набор промежуточных файлов для каждой из утилит (blockMesh и snappyHexMesh). Каждый промежуточный файл соответствует определенной экранной форме набора и применяется для сохранения данных, введенных пользователем в эту форму. Принято решение реализовать данный механизм за счет средств модуля Pickle [14] ВЯП Python, отвечающего за сериализацию данных.

Таким образом, при подготовке отдельной РС формируется набор промежуточных файлов с параметрами этой РС. Модуль Pickle выполняет сериа-лизацию введенных пользователем параметров. Далее на основании запакованных данных осуществляются генерация файлов параметров сеток (blockMeshDict или snappyHexMeshDict), а также формирование их структуры и наполнение параметрами РС. Для обеспечения возможности изменения уже созданных РС также применяются возможности модуля Pickle, который выполняет десериализацию (распаковку) введенных пользователем данных. При этом распакованные данные выводятся в набор экранных форм и доступны для редактирования пользователем. На рисунке 2 приведена блок-схема, описывающая последовательность действий пользователя при работе с программой snappyHexMeshDict_generator.

Реализация логики работы программы

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

#!/bin/sh

. /opt/openfoam4/etc/bashrc

surfaceFeatureExtract

snappyHexMesh

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

exit

Автоматизированный запуск bash-сценария предложено реализовать за счет применения модуля subprocess ВЯП Python. Данный модуль предусматривает запуск сторонних процессов параллельно работе пользователя в основном окне программы. При этом сторонний процесс выносится в отдельный, параллельный главному. Данный механизм позволяет пользователю осуществлять запуск любых дочерних процессов, в данном случае генерацию и визуализацию РС. Программная инструкция, отвечающая за запуск bash-сценария как внешнего процесса, следующая: run_subprocess = subprocess.Popen( [bash + 'путь до файла со скриптом'], cwd = 'директория расчетного случая', shell = True,

stdout-путь до файла с результатами', stderr='путь до файла с ошибками') Команда Popen реализует запуск выполнения сторонней программы (сценария) в отдельном процессе. Через эту команду передается набор аргументов, управляющих ходом выполнения внешнего процесса. Первый аргумент содержит указание на bash-интерпретатор и путь до файла сценария. Второй аргумент (cwd) передает ссылку на директорию расчетного случая, третий (shell) содержит указание на выполнение скрипта через терминал. Четвертый и пятый аргументы (stdout и stderr) содержат указание на файлы, содержащие результаты выполнения программы и возможные ошибки.

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

1. Файлы blockMeshDict и snappyHexMeshDict с параметрами сеток формируются на основе набора промежуточных файлов, который создается средствами модуля Pickle ВЯП Python 3.4, обеспечивающего сериализацию данных. Сохраненные в наборе промежуточных файлов параметры сетки загружаются в набор форм для обеспечения возможности ее редактирования. Благодаря предложенному подходу для пользователей реализована возможность как подготовки новых РС, так и изменения уже созданных. Данный подход позволяет пользователям приложения snappyHexMeshDict_ generator создавать любое количество РС для отдельного расчетного случая.

2. Общая структура файлов blockMeshDict и snappyHexMeshDict формируется на основе формы с описанием базовых параметров сетки (файл ini-tial_form.py). После указания базовых параметров сетки происходит автоматическая генерация остальных форм набора и структуры элементов управления форм. Форма с базовым описанием выполняет функцию инициализации ключевых свойств сетки.

(Запуск Л приложения у

Основное окно приложения

1) Выбор языка интерфейса 2) Создание новой фоновой РС (утилита ЫоскМеБЬ) или открытие существующей 3) Указание параметров новой фоновой РС или изменение _параметров существующей_

Рис. 2. Последовательность действий пользователя при работе с программой snappyHexMeshDict_generator

Fig. 2. Sequence of user actions when working with the program snappyHexMeshDict_generator

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

гика функционирования форм реализуется в служебных файлах bMD_window и sHMD_window, в которые импортируются файлы экранных форм. Служебные файлы bMD_window и sHMD_window выполняют функцию формирования окон блоков подготовки исходных данных для утилит blockMesh и snappyHexMesh соответственно.

4. Для реализации программного запуска утилит генерации РС и отображения результатов посредством пакета научной визуализации ParaView предложено использовать методологию bash-скриптинга как механизма программного запуска консольных команд. Bash-скрипты запускаются на выполнение посредством Python-модуля subpro-cess.

Демонстрация работы программы

Программное приложение, разработанное авторами статьи и предназначенное для подготовки РС, состоящих из шестигранников и разделенных шестигранников на основе геометрий триангулированной поверхности (snappyHexMeshDict_generator), относится к ПО с открытым исходным кодом.

Дистрибутив приложения размещен авторами на интернет-ресурсе GitHub [16], предоставляющем услуги хостинга IT-про-ектов. Дистрибутив, помимо служебных файлов с исходным кодом приложения, содержит инструкции пользователя для русскоязычной и англоязычной версий приложения.

Работа созданной программы протестирована авторами статьи на учебном примере, моделирующем одну из задач МСС и включенном в стандартный дистрибутив ПС OpenFOAM. В данном случае рассматривается учебная задача ПС OpenFOAM версии 4.0. Пример находится в директории учебных задач (.../openfoam4/tutorials/compressible/ rhoCentralFoam/forwardStep). Основное окно программы с загруженным стартовым окном выбора

Нет

директории РС и основное окно программы с набором экранных форм в окне блока подготовки исходных данных для сетки и с результатами ее генерации в блоке вывода результатов представлены на рисунках (см. http://www.swsys.ru/uploaded/image/ 2018-4/2018-4-dop/15 .jpg, http ://www. swsys.ru/up-loaded/image/2018-4/2018-4-dop/16.jpg). На рисунке 3 отображено основное окно приложения после отображения результатов визуализации, подготовленной РС посредством пакета ParaView.

Рис. 3. Основное окно программы с результатами визуализации РС

Fig. 3. The main program window with the results of computational meshes visualization

Заключение

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

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

Несмотря на то, что предложенное программное приложение создано под нужды Государственного ракетного центра Макеева, оно может применяться специалистами других предприятий, занимающимися численным моделированием за-

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

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

Литература

1. OpenFOAM. The open source CFD toolbox. URL: https://www.openfoam.com/ (дата обращения: 03.03.2018).

2. Jasak H. OpenFOAM: Open source CFD in research and industry. Intern. J. of Naval Architecture and Ocean Eng., 2009, vol. 1, iss. 2, pp. 89-94. DOI: 10.3744/JNAOE.2009.1.2.089.

3. Salome. The Open Source Integration Platform for Numerical Simulation. URL: http://www.salome-platform.org (дата обращения: 20.11.2017).

4. Ribes A., Caremoli C. Salome platform component model for numerical simulation. Proc. 31st COMPSAC, 2007, vol. 2, pp. 553-564. DOI: 10.1109/TOMPSAC.2007.

5. HELYX-OS. The market leading open-source GUI for OpenFOAM. URL: http://engys.com/products/helyx-os (дата обращения: 20.11.2017).

6. Visual-CFD for OpenFOAM. CFD simulation software aimed at solving complex flow applications. URL: https://www.esi-group.com/software-solutions/virtual-environment/cfd-multiphys-ics/visual-cfd-openfoam (дата обращения: 20.11.2017).

7. Kaald H. A Graphical User Interface for the Computa-tional Fluid Dynamics Software OpenFOAM. Proc. Norwegian Univ. of Sc. and Tech., 2014. URL: https://brage.bibsys.no/xmlui/han-dle/11250/2351767 (дата обращения: 20.11.2017).

8. Читалов Д.И., Меркулов Е.С., Калашников С.Т. Разработка графического интерфейса пользователя для программного комплекса OpenFOAM // Программная инженерия. 2016. Вып. 12. С. 568-574. DOI: 10.17587/prin.7.568-574.

9. ParaView. Open-source, multi-platform data analysis and visualization application. URL: https://www.paraview.org/ (дата обращения: 20.12.2017).

10. OpenFOAM. Tutorial Guide. URL: https://www.open-foam.com/documentation/tutorial-guide/index.php (дата обращения: 25.12.2017).

11. OpenFOAM. User Guide. URL: http://foam.source-forge.net/docs/Guides-a4/OpenFOAMUserGuide-A4.pdf (дата обращения: 15.12.2017).

12. Прохоренок Н.А. Python 3 и PyQt. СПб: БХВ-Петер-бург, 2012. 704 с.

13. PyQt4 Reference Guide. URL: http://pyqt.sourceforge.net/ Docs/PyQt4/ (дата обращения: 10.01.2018).

14. Сериализация объектов Python. URL: http://python-3.ru/page/module-pickle-python (дата обращения: 20.01.2018).

15. Искусство написания Bash-скриптов. URL: https://www. opennet.ru/docs/RUS/bash_scripting_guide/ (дата обращения: 01.02.2018).

16. Приложение для подготовки расчетных сеток из шестигранников и разделенных шестигранников на основе геометрий триангулированной поверхности. URL: https://github.com/Dmit-ryChitalov/snappyHexMesh_generator (дата обращения: 18.04.2018).

17. Дегтярь В.Г., Пегов В.И., Меркулов Е С. Численное моделирование эволюции границы каверны при пуске торпеды // Вестн. ЮУрГУ. Сер.: Матем. моделирование и программирование. 2013. Т. 6. Вып. 1. С. 5-12.

Software & Systems Received 19.04.18

DOI: 10.15827/0236-235X.031.4.715-722 2018, vol. 31, no. 4, pp. 715-722

Application development for preparing meshes using snappyHexMesh of OpenFOAM

D.I. Chitalov 1 Junior Researcher, cdi9@yandex.ru

S.T. Kalashnikov 1, Ph.D. (Engineering), Head of Department, src@makeyev.ru 1 South Ural Scientific Center, Miass, Ilmen reserve, 456317, Russian Federation

Abstract. The paper describes an application with a graphical user interface for preparing computational meshes that contain hexahedra and split-hexahedra from triangulated surface geometries using the OpenFOAM software environment, and the application development process.

The paper presents the existing paid and open software tools used to simplify the problem of preparing such computational meshes. The authors determine their limitations and relevance of the indicated problem and the necessity of developing a new application for preparing meshes for OpenFOAM SE.

The authors have made a list of tasks to implement the development. They have studied the operating principle of Open-FOAM SE utility responsible for the mentioned type of CM generation. The determined list of necessary tools for program development includes a programming language of application logic, a library that provides implementation of interface elements, and the development environment. The authors indicate the software required to use the developed application. There are diagrams that describe the application structure, the algorithm of user's work with application. The paper also determines some difficulties in algorithm implementation and program logic and proposes the ways to solve them.

The application has been tested on the training task included in of OpenFOAM SE. The authors summarize the results of the conducted research, evaluate the practical importance of the conducted research work and the created software application, possible prospects of the research. The paper provides a web resource that contains the developed application, which is freely available, for testing and practical using.

Keywords: graphical user interface, hexahedra and split-hexahedra meshes, OpenFOAM, blockMesh utility, snappyHex-Mesh utility, Python programming language, PyQt4 library, open source software, numerical simulation.

References

1. OpenFOAM. The open source CFD toolbox. Available at: https://www.openfoam.com/ (accessed March 3, 2018).

2. Jasak H. OpenFOAM: Open source CFD in research and industry. Intern. J. of Naval Architecture and Ocean Engineering. 2009, vol. 1, iss. 2, pp. 89-94. DOI: 10.3744/JNAOE.2009.1.2.089.

3. Salome. The Open Source Integration Platform for Numerical Simulation. Available at: http://www.salome-plat-form.org (accessed November 20, 2017).

4. Ribes A., Caremoli C. Salome platform component model for numerical simulation. Proc. 31st Annual Intern. Computer Software and Applications Conf. (COMPSAC) 2007. 2007, vol. 2. DOI: 10.1109/mMPSAC.2007.

5. HELYX-OS. The market leading open-source GUI for OpenFOAM. Available at: http://engys.com/products/helyx-os (accessed November 20, 2017).

6. Visual-CFD for OpenFOAM. CFD Simulation Software Aimed at Solving Complex Flow Applications. Available at: https://www.esi-group.com/software-solutions/virtual-environment/cfd-multiphysics/visual-cfd-openfoam (accessed November 20, 2017).

7. Kaald H. A Graphical User Interface for the Computa-tional Fluid Dynamics Software OpenFOAM. Proc. Norwegian Univ. of Sc. and Tech., 2014. URL: https://brage.bibsys.no/xmlui/handle/11250/2351767 (accessed November 20, 2018).

8. Chitalov D.I., Merkulov E.S., Kalashnikov S.T. Development of a graphical user interface for the OpenFOAM software package. Software Engineering. 2016, iss. 12, pp. 568-574 (in Russ.). DOI: 10.17587/prin.7.568-574.

9. ParaView. Open-source, Multi-Platform Data Analysis and Visualization Application. Available at: https://www.para-view.org/ (accessed December 20, 2017).

10. OpenFOAM. Tutorial Guide. Available at: https://www.openfoam.com/documentation/tutorial-guide/index.php (accessed December 25, 2017).

11. OpenFOAM. User Guide. Available at: http://foam.sourceforge.net/docs/Guides-a4/OpenFOAMUserGuide-A4.pdf (дата обращения: 15.12.2017).

12. Prokhorenok N.A. Python 3 andPyQt. SPb, BHV-Peterburg Publ., 2012, 704 p.

13. PyQt4 Reference Guide. Available at: http://pyqt.sourceforge.net/Docs/PyQt4/ (accessed January 10, 2018).

14. Serialization of Python Objects. Available at: http://python-3.ru/page/module-pickle-python (accessed January 20, 2018).

15. The art of Writing Bash Scripts. Available at: https://www.opennet.ru/docs/RUS/bash_scripting_guide/ (accessed Febuary 1, 2018).

16. An Application to Prepare Meshes Containing Hexahedra and Split-Hexahedra from Triangulated Surface Geometries. Available at: https://github.com/DmitryChitalov/snappyHexMesh_generator (accessed April 18, 2018).

17. Degtyar V.G., Pegov V.I., Merkulov E.S. Numerical simulation of the evolution of the cavern boundary during torpedo launch. Bulletin of South Ural State Univ. Series: Computational Mathematics and Software Engineering. 2013, vol. 6, iss. 1, pp. 5-12 (in Russ.).

i Надоели баннеры? Вы всегда можете отключить рекламу.