ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Journal influence

Higher Attestation Commission (VAK) - К1 quartile
Russian Science Citation Index (RSCI)

Bookmark

Next issue

4
Publication date:
09 December 2024

Software module for stressFoam solver in OpenFOAM platform

Date of submission article: 15.06.2023
Date after edit article: 19.07.2023
Date of acceptance for publication: 02.08.2023
UDC: 004.512
The article was published in issue no. № 4, 2023 [ pp. 661-667 ]
Abstract:The paper summarizes the results of the work on expanding a graphical shell option list for OpenFOAM platform in terms of using stressFoam solver. The purpose of the solver is studying solids property changes under stress influence. There is a formulated main disadvantage of OpenFOAM environment, which necessitates the study. The author reveals relevance of the problem under study, studies available software solutions and their shortcomings. The goals of the work and necessary steps to achieve them are determined. The purpose of the stressFoam program and the main scope of its application is given. The paper describes a set of technologies required for implementing a graphical, software part of the project and a data storage subsystem. It also gives a rationale for using each technology and determines a product architecture and a development environment. There are structure and logic diagrams of module operation, highlighted main program components of the module and an algorithm for applying in continuum mechanics problems. The module main window is shown at the stage of completing numerical simulation of one of MCC fundamental problems; using stressFoam solver is studied. Work results are expressed in preparing a software solution that replaces a usual command line approach with a more efficient one, which implies performing all steps through a graphical user interface. The paper determines work scientific novelty components and the expected practical product value for a user. The product source code is placed in a GitHub service repository for providing access to specialists using OpenFOAM in experiments and research.
Аннотация:Представленная статья отражает итоги работы по расширению перечня опций графической оболочки для платформы OpenFOAM в контексте применения программы-решателя stressFoam. Назначение программы – исследование изменения свойств твердых тел под влиянием напряжений. Предметом исследования являются процесс постановки численных экспериментов на базе решателя stressFoam и возможность его осуществления посредством графического интерфейса. Сформулирован главный недостаток среды OpenFOAM, обусловивший необходимость выполнения исследования. Дана информация о назначении программы stressFoam и основной сфере ее применения. Описан набор технологий, необходимых для реализации графической, программной части проекта и подсистемы хранения данных. Приведено обоснование применения каждой технологии, определены архитектура создаваемого продукта и среда разработки. Даны диаграммы структуры и логики работы модуля, где выделены главные программные компоненты модуля и алгоритм его применения для задач механики сплошных сред. Итогом выполненной работы является программное решение, заменяющее привычный подход применения командной строки на более эффективный, в соответствии с которым все шаги выполняются посредством графического интерфейса пользователя. Исходный код продукта размещен в репозитории сервиса GitHub для реализации доступа специалистов, применяющих OpenFOAM в экспериментах и исследованиях.
Authors: Chitalov, D.I. (cdi9@yandex.ru) - South Ural Scientific Center (Junior Researcher), Miass, Russia
Keywords: python programming language, graphical user interface, open source software, stressFoam solver, openfoam, program module, numerical simulation
Page views: 2695
PDF version article

Font size:       Font:

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

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

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

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

Российские программисты и исследователи также заинтересованы в решении указанной проблемы и предлагают собственные подходы, которые воплощаются в оригинальных графических оболочках для OpenFOAM [6–8]. В одном из таких продуктов предлагается усовершенствованная версия традиционного подхода, когда процессом численного моделирования специалист по-прежнему управляет вручную, через командную строку, но этот процесс упрощается благодаря разработанному на базе библиотеки TextControlPages консольному менеджеру.

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

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

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

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

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

Для достижения поставленной цели предполагается выполнить следующие задачи:

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

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

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

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

Назначение решателя stressFOAM

Как уже отмечено, stressFOAM – одна из стандартных программ дистрибутива Open- FOAM для моделирования проблем МСС. Программа специализируется на задачах в области изучения напряжений применительно к твердым телам. У ее пользователя при подготовке расчетного случая существует возможность включения или выключения опции влияния температуры. Если говорить о реальных численных экспериментах, то большее внимание уделяется именно изотермическому механическому напряжению, а температурные воздействия не учитываются.

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

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

Технологии разработки

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

·       Язык программирования логики. Поскольку представленный модуль расширяет возможности базовой версии графической оболочки, применяемый язык должен обладать гибкостью и масштабируемостью. Логику программного модуля решено реализовать средствами высокоуровневого языка Python 3.7. Визуальная часть приложения, сформированная за счет Python, не требует установки и настройки сервера [9].

·       Технология программирования графического интерфейса. Важно применить библиотеку, поддерживающую синтаксис выбранного языка программирования и при этом позволяющую создавать привычные оконные интерфейсы и сопровождаться подробной документацией. Одной из таких библиотек для Python является PyQt. Важная особенность PyQt в том, что для построения экранных форм применяется Qt Designer, который позволяет формировать структуры различной сложности простым перетаскиванием виджетов в рабочую область. Экранные формы, созданные средствами PyQt, обладают возможностью динамического изменения характеристик в зависимости от параметров монитора и типа ОС [10–12].

·       Технология реализации подсистемы хранения данных. Все указываемые пользователем расчетные параметры должны быть определенным образом сохранены и в последующем восстановлены. Оптимальным вариантом будет применение реляционных БД. Для настольных программных продуктов применяются БД формата SQLite.

·       Среда разработки. Это оконное программное средство, которое обеспечивает не только набор кода, но и его отладку, тестирование, а также запуск всего проекта для оценки работоспособности. Для приложений на Python популярной средой разработки является PyCharm.

·       Операционная система. Дистрибутивы OpenFOAM доступны для всех основных видов операционных систем, в том числе Windows, Linux, macOS. Предложенное программное решение также поддерживается на указанных платформах и может загружаться в формате whl-пакета или через исполняемый файл.

Структура модуля

Представленный программный модуль состоит из ряда файлов, содержащих программный код скриптов (рис. 1). Это не окончательный на- бор, поскольку модуль предполагает расширение функциональных возможностей и подключение новых блоков. Файлы объединены в служебные директории. Для модуля реализованы корневая директория и запускаемый файл.

Корневая директория, помимо запускаемого файла (run.py), содержит несколько вложенных директорий. Директория windows содержит макеты окон для экранных форм.  По сути для каждой формы создается оболочка (окно-виджет, диалоговое окно и т.д.). В директории forms для каждой формы определяется структура элементов управления. Эти элементы привязываются к окну, и получается готовая экранная форма. Директория threads содержит файлы со скриптами запуска генерации расчетных сеток, программ-решателей, отвечающих непосредственно за численное моделирование, утилит визуализации результатов.  В директории functions находятся файлы с кодом служебных функций, отвечающих, например, за переключение окон графической оболочки, вывод служебных сообщений и др.

Логика работы модуля

Работа с представленным модулем включает этапы препроцессинга, решения и постпроцессинга (рис. 2).

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

Проверка работы модуля

Представленный модуль разработан с помощью свободно распространяемых технологий и не требует приобретения лицензии. Он расши- ряет исходный код OpenFOAM и может дополняться новыми компонентами. Актуальная версия модуля размещена в репозитории сервиса GitHub (URL: https://github.com/DmitryChitalov/ OpenFOAM_GUI). Приложение может применяться инженерами предприятий машиностроения, использующими OpenFOAM при проектировании продукции.

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

Дискуссия

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

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

Заключение

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

Были предложены и реализованы в графической и программной составляющей модуля следующие подходы:

– отделение исходного кода окон экранных форм от кода элементов управления форм;

– применение bash-скриптов для запуска утилит и программ-решателей OpenFOAM;

– механизм проверки типов данных, вводимых через экранные формы;

– механизм проверки комплектности расчетного случая.

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

Список литературы

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

2.      Читалов Д.И., Калашников С.Т. Разработка приложения для подготовки расчетных сеток с градуирующими и изогнутыми краями для программной среды OpenFOAM // Системы и средства информатики. 2018. Т. 28. № 4. С. 122–135. doi: 10.14357/08696527180412.

3.      Читалов Д.И., Калашников С.Т. Разработка приложения для подготовки расчетных сеток посредством утилиты snappyHexMesh программной среды OpenFOAM // Программные продукты и системы. 2018. Т. 31. № 4. С. 715–722. doi: 10.15827/0236-235X.124.715-722.

4.      Салий Т.М. Принципы создания пользовательского интерфейса // Вестн. ИнЕУ. 2016. № 3. С. 87–89.

5.  Мондрий К.П. Графический интерфейс как инструмент взаимодействия человека с компьютером // Науч. электрон. журнал Меридиан. 2020. № 7. С. 69–71. URL: https://elibrary.ru/download/elibrary_42403946_69666421.pdf (дата обращения: 6.06.2023).

6.      Ченцов П.А. Об одном подходе к построению интерфейсов консольных приложений: технология TextControlPages // Программная инженерия. 2016. Т. 7. № 12. С. 537–546.

7.      Пащенко Д.С. Отражение в российской практике мировых тенденций в технологиях, средствах и подходах в разработке программного обеспечения // Программная инженерия. 2017. Т. 8. № 8. С. 339–344. doi: 10.17587/prin.8.339-344.

8.      Banerjee I. Advances in model-based testing of GUI-based software. Advances in Computers, 2017, vol. 105, pp. 45–78. doi: 10.1016/bs.adcom.2016.12.003.

9.      Сторожева В.К. Сферы применения языка Python // Актуальные проблемы авиации и космонавтики: сб. матер. VIII Междунар. науч.-практич. конф. 2022. С. 498–500.

10.    Пальмов С.В., Поскиваткина А.А. Сравнение библиотек tkInter, PyQt, wxPython // ЕНО. 2020. № 11-2. С. 122–126.

11.    Шокодько Ф.А. Разработка графического интерфейса клиентского приложения, графических элементов и их динамизация для ПК // Студент года 2023: сб. статей XXV Междунар. науч.-исслед. конкурса. 2023. С. 24–29.

12.    Нехорошева Е.М., Конецкая Е.А. Графические возможности Python // Информационно-телекоммуникационные системы и технологии: матер. науч.-практич. конф. 2021. С. 99–101.

References

  1. Chitalov, D.I., Merkulov, Ye.S., Kalashnikov, S.T. (2016) ‘Development of a graphical user interface for the OpenFOAM toolbox’, Software Engineering, 7 (12), pp. 568–574 (in Russ.).  doi: 10.17587/prin.7.568-574.
  2. Chitalov, D.I., Kalashnikov, S.T. (2018) ‘Development of an application for preparation of computational meshes with graduating and curved edges for the OpenFOAM software’, Systems and Means of Inform., 28 (4), pp. 122–135 (in Russ.). doi: 10.14357/08696527180412.
  3. Chitalov, D.I., Kalashnikov, S.T. (2018) ‘Application development for preparing meshes using snappyHexMesh of OpenFOAM’, Software & Systems, 31(4), pp. 715–722 (in Russ.). doi: 10.15827/0236-235X.124.715-722.
  4. Saliy, T.M., Bazheneyeva, Z.B. (2016) ‘Principles of creation of user interface’, Bull. of the InEU, (3), pp. 87–89 (in Russ.).
  5. Mondriy, K.P. (2020) ‘Graphical interface as a tool for human-computer interaction’, Meridian, (7), pp. 69–71, available at: https://elibrary.ru/download/elibrary_42403946_69666421.pdf (accessed June 06, 2023) (in Russ.).
  6. Chentsov, P.A. (2016) ‘New way to construct console application interfaces: technology TextControlPages’, Software Engineering, 7 (12), pp. 537–546 (in Russ.).
  7. Pashchenko, D.S. (2017) ‘Reflection in the Russian practice of world trends in technologies, tools and approaches to software development’, Software Engineering, 8 (8), pp. 339–344 (in Russ.). doi: 10.17587/prin.8.339-344.
  8. Banerjee, I. (2017) ‘Advances in model-based testing of GUI-based software’, Advances in Computers, 105, pp. 45–78. doi: 10.1016/bs.adcom.2016.12.003.
  9. Storozheva, V.K. (2022) ‘Areas of application of the python language’, Proc. Int. Sci.-Pract. Conf. Actual Problems of Aviation and Cosmonautics, pp. 498–500 (in Russ.).
  10. Palmov, S.V., Poskivatkina, A.A. (2020) ‘Comparison of tkInter, PyQt, wxPython Libraries’, ESA, (11-2), pp. 122–126 (in Russ.).
  11. Shokodko, F.A. (2023) ‘Development of the graphic interface of the client application, graphic elements and their dynamization for PC’, Proc. XXV Int. Research Compet. Student of the Year 2023, pp. 24–29 (in Russ.).
  12. Nekhorosheva, E.M., Konetskaya, E.A. (2021) ‘Python graphical capabilities’, Proc. Sci.-Pract. Conf. Inform. and Telecommunication Systems and Tech., pp. 99–101 (in Russ.).

Permanent link:
http://swsys.ru/index.php?id=5044&lang=en&page=article
Print version
The article was published in issue no. № 4, 2023 [ pp. 661-667 ]

Perhaps, you might be interested in the following articles of similar topics: