- •РЕФЕРАТ
- •Записка к выпускной квалификационной работе изложена на 107 стр. машинописного текста, состоит из 3 разделов и включает 24 рисунка.
- •СОДЕРЖАНИЕ
- •ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ
- •ВВЕДЕНИЕ
- •1 Анализ задачи создания пользовательского интерфейса для OpenFOAM
- •1.1 Взаимодействие пользователя с OpenFOAM в процессе моделирования задачи
- •1.1.1 Предпроцессинг
- •1.1.2 Решение задачи и пост-процессинг
- •1.2 Основные требования к пользовательскому интерфейсу OpenFOAM
- •1.3 Функционал пользовательского интерфейса OpenFOAM
- •2 Определение средств для реализации пользовательского интерфейса OpenFOAM
- •2.1 Выбор операционной системы
- •2.2 Выбор языка программирования
- •2.3 Выбор IDE
- •3 Разработка пользовательского интерфейса для OpenFOAM
- •3.1 Структура приложения-интерфейса для OpenFOAM
- •3.2 Разработка классов объектов, хранящих информацию из файлов кейса OpenFOAM
- •3.2.1 Формат файлов кейсов OpenFOAM
- •3.2.2 Разработка абстрактного базового класса Dict
- •3.2.3 Разработка класса ControlDict
- •3.2.4 Разработка класса BlockMeshDict
- •3.2.5 Разработка класса Boundary
- •3.2.6 Разработка класса Field
- •3.2.7 Разработка класса Constant
- •3.2.8 Разработка класса SetFieldsDict
- •3.3 Разработка графического пользовательского интерфейса приложения
- •3.3.1 Внешний вид приложения
- •3.3.2 Вкладка «control»
- •3.3.2 Вкладка «blockMesh»
- •3.3.3 Вкладка «boundary»
- •3.3.4 Вкладка «Поля»
- •3.3.5 Вкладка «setFields»
- •3.3.6 Вкладка «Константы»
- •3.3.7 Вкладки «fvSolution» и «fvSchemes»
- •3.3.8 Вкладка «Запуск»
- •Заключение
- •СПИСОК ЛИТЕРАТУРЫ
- •ПРИЛОЖЕНИЕ А
- •Листинги ключевых частей программы
2 Определение средств для реализации пользовательского интерфейса OpenFOAM
В предыдущем разделе было показано, что интерфейс должен представлять собой приложение, позволяющее работать с файлами кейса OpenFOAM [1] с помощью графического пользовательского интерфейса. Для реализации такого приложения необходимо выбрать следующие средства.
1)Операционная система. На сайте разработчика готовый пакет OpenFOAM (не исходный код) предлагается установить на одну из трех ОС: Ubuntu, SuSE, Fedora. Поскольку написание и тестирование приложения будет производиться под той же ОС, на которую был установлен OpenFOAM, от ее выбора будет зависеть то, какие пользователи смогут пользоваться протестированным приложением.
2)Язык программирования. Поскольку приложение-интерфейс для OpenFOAM не должно выполнять ресурсоемких вычислительных задач, производительность языка программирования не является критерием его выбора. Выбирать следует по другим признакам: удобство, наличие средств ООП, в конце концов, наличие опыта программирования на данном языке.
3)IDE. Необходимо выбрать ту IDE, которая позволяет создать приложение с графическим пользовательским интерфейсом, с удобным текстовым редактором, отладчиком, и конечно, поддерживает выбранный язык программирования.
2.1 Выбор операционной системы
На сайте разработчика есть три установочных пакета OpenFOAM под разные дистрибутивы Linux, а также пакет с исходным кодом. Несмотря на то, что на сайте говорится только о Linux-версиях OpenFOAM, существует версия и под Windows [3], однако она не поддерживается разработчиком. Необходимо выбрать ту ОС, использование под которой OpenFOAM наиболее популярно. Мой выбор пал на Ubuntu, так как ее использует более чем 20 миллионов пользователей, что
19
делает его самым популярным дистрибутивом Linux для десктопов [4]. В случае необходимости использования графического интерфейса для OpenFOAM под другой ОС, при выборе кроссплатформенной IDE можно будет легко портировать разработанное приложение под нужную ОС.
2.2 Выбор языка программирования
Выбранный язык программирования должен обладать хорошей читаемостью и удобством. Также, с учетом того, что разрабатываемое приложение, возможно, понадобится дорабатывать, дополнять новыми функциями, язык должен быть популярен, чтобы осуществить доработку могли большее количество программистов. Кроме того, язык должен быть объектно-ориентированным. Данное свойство позволит работать с группами настроек и исходных данных кейса OpenFOAM как с объектами, обладающими своими членами и методами, и позволит использовать такие важные преимущества, как наследование и полиморфизм.
Перечисленным требованиям удовлетворяют множество языков программирования. В их числе и язык C++. Он является достаточно популярным, и в его использовании у меня есть некоторый опыт, поэтому свой выбор я остановлю на нем.
2.3 Выбор IDE
Из всех IDE следует выбрать одну из тех, которые обладают следующими принципиально важными свойствами:
1)позволяют выполнять разработку под ОС Ubuntu;
2)позволяют разрабатывать GUI;
3)поддерживают выбранный язык программирования C++.
После отсеивания IDE, не обладающих данными свойствами, получим список IDE, представленный в таблице 1 [5].
20
Таблица 1 – Сравнение IDE
IDE |
Лицензия |
Платформы |
Отладчик |
Автодополнение |
Браузер классов |
Qt Creator |
GPL |
Linux, |
Да |
Да |
Да |
|
|
Mac OS X, |
|
|
|
|
|
FreeBSD, |
|
|
|
|
|
Windows |
|
|
|
Eclipse CDT |
EPL |
Linux, |
Да |
Да |
Нет |
|
|
Windows, |
|
|
|
|
|
JVM |
|
|
|
MonoDevelop |
GPL |
Windows, |
Да |
Да |
Да |
|
|
Linux, |
|
|
|
|
|
Mac OS X |
|
|
|
Sun Studio |
проприетар- |
Linux, |
Да |
Да |
Да |
|
ная |
Solaris |
|
|
|
Ultimate++ |
BSD |
Windows, |
Да |
Неизвестно |
Да |
|
|
Linux |
|
|
|
Codelite |
GPL |
Windows, |
Да |
Да |
Да |
|
|
Linux, |
|
|
|
|
|
MacOS X |
|
|
|
Code::Blocks |
GPL |
Linux, |
Да |
Да |
Да |
|
|
MacOS X |
|
|
|
KDevelop |
GPL |
Linux |
Да |
Да |
Да |
Anjuta |
GPL |
Linux |
Да |
Да |
Да |
Как видно из приведенной таблицы, не все приведенные IDE обладают качествами, улучшающими их удобство для разработчика, такими, как браузер классов и автодополнение. Кроме того, предпочтение следует отдать свободно распространяемой IDE. Таким образом из списка возможных IDE можно исключить Sun Studio с проприетарной лицензией, Eclipse CDT без браузера классов и Ultimate++, для которой нет данных о наличии автодополнения в ее текстовом редакторе.
Дальнейшим критерием отбора можно выбрать кроссплатформенность. Как было сказано выше, существует версия OpenFOAM под Windows. Следовательно, может возникнуть необходимость портирования нашего приложения под данную ОС. В списке остаются Qt Creator, MonoDevelop и Codelite. Qt Creator для разработки GUI использует библиотеку Qt, MonoDevelop – GTK+, а CodeLite – wxWidgets. Каждая из этих библиотек успешно используется для разработки ПО
[6, 7, 8]. Однако я остановлю свой выбор на Qt Creator, как одной из наиболее 21
популярных IDE. К ее достоинствам, помимо того, что она удовлетворяет перечисленным выше требованиям, можно отнести наличие качественной документации, в противовес классам из библиотеки wxWidgets. Ввиду ее популярности на вопрос, возникший в процессе разработки, связанный с библиотекой Qt, гораздо проще найти ответ в интернете (часто даже на русском языке), нежели на вопросы о других библиотеках.
22