Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diplom3.pdf
Скачиваний:
143
Добавлен:
09.02.2015
Размер:
1.48 Mб
Скачать

3.3 Разработка графического пользовательского интерфейса приложения

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

3.3.1 Внешний вид приложения

При запуске приложения появляется главное окно с заголовком «Редактор кейсов OpenFOAM» (рисунок 3).

Рисунок 3 — Главное окно приложения

55

На рисунке 3 видно, что окно включает в себя множество вкладок. Название вкладки символизирует те данные кейса, которые можно редактировать с помощью элементов графического интерфейса, находящихся внутри данной вкладки. Так, на рисунке 3 показано содержимое вкладки «control», с помощью которой можно редактировать словарь controlDict. Кейс следует редактировать в том порядке, в котором расположены вкладки.

В меню приложения, расположенном в верхней части экрана, содержится единственный пункт «Кейс». При выборе этого пункта выпадает следующий список.

«Открыть...» — при выборе этого пункта появляется диалоговое окно выбора директории открываемого кейса. В случае, если необходимо отредактировать существующий кейс, нужно выбрать этот пункт меню.

«Сохранить» — при выборе этого пункта кейс сохраняется в той директории, в которой он находился при открытии или при последнем сохранении. Если кейс не был открыт, а редактировался «с нуля», появится диалоговое окно выбора директории, куда следует сохранить кейс.

«Сохранить как...» — при выборе этого пункта появляется диалоговое окно выбора директории, куда следует сохранить текущий редактируемый кейс.

«Выход» — при выборе этого пункта приложение закрывается.

3.3.2 Вкладка «control»

Содержимое вкладки control показано на рисунке 3. С помощью элементов интерфейса, расположенных в ней, можно редактировать содержимое файла controlDict, то есть такие настройки, как временной шаг, начальное и конечное время и многие другие. Параметры, для которых существует ограниченный набор значений (параметры перечислимого типа), редактируются с помощью виджета QComboBox — выпадающего списка вариантов. Параметрами, редактируемыми с помощью этого виджета, являются, например, «Время старта» и «Конечное время». Другие параметры требуют ввода целого или дробного числа с помощью виджета QLineEdit — поля ввода строки текста. Например, в поле «Временной шаг симулирования» необходимо ввести дробное число. При этом, если пользователь введет туда, к примеру, текст, а не дробное число, поле пример значение, которое

56

было в нем до ввода пользователем некорректного значения. Такая же защита применяется для полей, принимающие беззнаковые целые числа (например, «Точность записи»). Параметр application редактируется также с помощью QLineEdit, но является параметром текствого типа — в это поле следует ввести название решателя, с помощью которого выполняется решение задачи. Параметром логического типа является только параметр runTimeModifiable — он редактируется с помощью виджета QCheckBox.

Как было сказано в пункте 3.2.3, в controlDict могут входить также параметры, характерные для отдельных решателей и не описываемые в руководстве пользователя OpenFOAM. Для редактирования таких параметров нужно нажать кнопку «Другие параметры...», в результате чего появится диалоговое окно, показанное на рисунке 4.

Рисунок 4 — Диалоговое окно «Другие параметры»

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

57

(можно выделить несколько элементов, зажав клавишу Shift или Control) и нажимая кнопку «Удалить параметр».

3.3.2 Вкладка «blockMesh»

Содержимое вкладки «blockMesh» показано на рисунке 5.

Рисунок 5 — Содержимое вкладки blockMesh

Данная вкладка содержит пять кнопок: «Вершины», «Блоки», «Ребра», «Патчи» и «Запустить blockMesh». С помощью первых пяти редактируется словарь blockMeshDict, а при нажатии на последнюю запускается утилита blockMesh. Стоит помнить, что перед запуском утилиты следует сохранить кейс, выбрав соответствующий пункт меню в панели сверху или с помощью сочетания клавиш Ctrl+S.

58

При нажатии на кнопку «Вершины» появляется форма редактирования списка вершин, показанная на рисунке 6.

Рисунок 6 — Форма редактирования списка вершин словаря blockMeshDict

Вданной форме содержится таблица из четырех столбцов. Первый столбец

порядковый номер вершины, начиная с нуля. Ячейки первого столбца закрыты для редактирования пользователем, их содержимое генерируется автоматически. В остальных столбцах содержатся координаты вершин X, Y и Z, они могут изменяться пользователем. Также на форме есть кнопки «Добавить» и «Удалить». При нажатии на первую добавляется новая вершина, при нажатии на вторую — удаляются все выделенные в таблице вершины.

При нажатии на кнопку «Блоки» появляется форма редактирования списка блоков, показанная на рисунке 7.

59

Рисунок 7 — Форма редактирования списка блоков словаря blockMeshDict

Данная форма содержит область прокрутки, в которой содержится некоторое количество виджетов типа QGroupBox — группы элементов графического дизайна. Каждая из групп элементов содержит одинаковый набор элементов для редактирования соответствующего блока: текстовые поля «Название», восемь полей «Вершины», три поля «Количество ячеек» и двенадцать полей «Расширение ячеек». Также имеется выпадающий список «Тип расширения». Каждое из полей служит для редактирование соответстующих параметров блока, которые разбирались в пункте 3.2.4. Кроме того, в каждой группе элементов присутствует

60

кнопка «Удалить блок», назначение которой очевидно. Добавить блок можно с помощью кнопки «Добавить блок», находящейся над областью прокрутки.

При нажатии на кнопку «Ребра» во вкладке «blockMesh» появляется форма редактирования списка дугообразных ребер, показанная на рисунке 8.

Рисунок 8 — Форма редактирования списка дугообразных ребер словаря blockMeshDict

Данная форма содержит таблицу, строки которой содержат информацию о ребрах типа arc. В первых двух столбцах указываются номера вершин, которые соединяются данным ребром, а в трех последних — координаты точки интерполяции. Ребра, как обычно, можно удалить, выделяя нужные элементы таблицы, или добавить. Однако, если список вершин содержит менее двух вершин, при попытке добавления ребра пользователь получит сообщение, показанное на рисунке 9.

Рисунок 9 — Сообщение о невозможности добавления нового ребра

61

При нажатии на кнопку «Патчи» во вкладке «blockMesh» появляется форма редактирования списка патчей, показанная на рисунке 10.

Рисунок 10 — Форма редактирования списка патчей словаря blockMeshDict

В ячейках данной таблицы расположены виджеты типа QComboBox и QPushButton — выпадающие списки и кнопки. Так как типов патчей в blockMeshDict немного, тип можно выбрать из выпадающего списка. Кроме того, в таблице имеется столбец «Соседний патч», где можно указать соседний патч для данного. При этом соседнего можно указать только для патча, имеющего тип cyclic, и соседний патч должен иметь тот же тип. Поэтому в выпадающем списке «Соседний патч» доступны только патчи типа cyclic. При нажатии на кнопку «Грани» для соответствующего патча появляется форма редактирования списка граней для данного патча, показанная на рисунке 11.

62

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]