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

1 Анализ задачи создания пользовательского интерфейса для OpenFOAM

OpenFOAM [2] в умелых руках представляет собой мощный инструмент для моделирования задач механики сплошных сред. Круг задач, решаемых с помощью данной системы, очень широк, с учетом того, что пользователь может подключать к пакету дополнительные пользовательские решатели и утилиты для решения задач, не предусмотренных в стандартном составе пакета. Открытость и расширяемость является характерным атрибутом большинства open-source проектов, написанных под ОС Linux. Однако для таких проектов характерны также особые требования к квалификации пользователя данного программного продукта.

Рассмотрим, к примеру, процесс установки OpenFOAM на компьютер с ОС Ubuntu. В руководстве по установке пользователю предлагается использовать консольную утилиту apt-get для установки OpenFOAM и программы-визуализатора Paraview. После установки для использования пакета необходимо отредактировать файл .bashrc, используя текстовый редактор gedit, добавив в файл строку

source /opt/openfoam211/etc/bashrc

Данное действие позволяет запускать решатели и утилиты, входящие в состав пакета OpenFOAM, через терминал Ubuntu.

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

12

Рассмотрим подробнее взаимодействие пользователя с OpenFOAM в процессе задания условий задачи, ее решения и визуализации.

1.1 Взаимодействие пользователя с OpenFOAM в процессе моделирования задачи

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

1.1.1 Предпроцессинг

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

Общая файловая структура кейса OpenFOAM представлена на рисунке 1.

Рисунок 1 – Общая файловая структура кейса OpenFOAM

13

Всостав кейса входят следующие директории:

Директория constant – содержит полное описание расчетной сетки, используемой в данном кейсе (находится в поддиректории polyMesh), а также физические свойства среды (например, transportProperties) и константы (например, ускорение свободного падения);

Директория system – содержит файлы, в которых задаются параметры, связанные непосредственно с решением. Содержит как минимум три файла:

1): controlDict – в нем задаются параметры запуска решения, такие, как начальное и конечное время расчета, временной шаг и параметры, связанные с записью результатов расчета; 2) fvSchemes – в нем задаются схемы дискретизации, используемые в решении; 3) fvSolution – в нем задаются решатели уравнений, точности и другие параметры;

Временные директории (time directories) – содержат файлы с данными о полях. Данные о поле могут быть либо заданы пользователем как начальные значения и граничные условия для решения задачи, либо получены в результате решения задачи программой-решателем. Имя каждой временной директории соответствует определенному моменту времени, в который поля принимают значение, указанное в файлах, содержащихся в данной директории (например, имя директории может быть «0» или «0.000000e+00», в зависимости от формата, который задан в controlDict).

Помимо перечисленных файлов в кейс могут входить дополнительные

файлы-словари утилит, которые используются в решении данной задачи. К примеру, часто для генерирования расчетной сетки используют утилиту blockMesh, которая требует наличия своего словаря под названием blockMeshDict в папке polyMesh. Другой пример: для задания однородных полей не требуется больших усилий – необходимо лишь прописать в нужном файле поля (который находится в одной из временных директорий) ключевое слово uniform, после чего написать значение физической величины, и данное значение будет присвоено всем ячейкам расчетной сетки. Однако в случае неоднородного поля OpenFOAM требует задания значения физической величины для каждой ячейки расчетной сетки отдельно.

14

Предположим, что мы решаем задачу в трехмерном пространстве 20x20x20 ячеек. Для этого нам потребуется вручную задать список из 8000 значений. Чтобы избежать этого, используется утилита setFields, которая позволяет задать значение для определенной группы ячеек, ограниченных объемом какой-либо геометрической фигуры, например, параллелепипеда. Утилита setFields также требует наличия словаря setFieldsDict в папке system.

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

1.1.2 Решение задачи и пост-процессинг

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

15

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