Система Визуализации
программного комплекса
FlowVision

В. А. Кутин

ООО «ТЕСИС», Москва, Россия

vitaly@tesis.com.ru

Аннотация

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

Ключевые слова: научная визуализация, визуализация данных, машинная графика, графическая интерпретация, вычислительная гидродинамика, моделирование течений, вычислительный кластер, высокопроизводительные вычисления, FlowVision, OpenGL

Оглавление

1. Введение. 1

2. Программный комплекс FlowVision. 3

3. Визуализация граничных поверхностей модели. 4

4. Геометрические объекты.. 9

5. Слои визуализации. 10

6. Расчётная сетка. 10

7. Цветовые контуры / изолинии. 12

8. Графики. 16

9. Изоповерхности. 17

10. Векторы.. 19

11. Линии тока. 20

12. Анализ расчётной сетки. 21

13. Интегральные характеристики. 23

14. Сохранение изображений. 24

15. Презентационная графика. 24

16. Контроль состояния расчёта. 26

17. Заключение. 26

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

1. Введение

Вычислительная гидродинамика (ВГД, CFDComputational Fluid Dynamics) – раздел гидродинамики, занимающийся численным моделированием течений жидкости и газа при помощи вычислительной техники. Наравне с теорией и экспериментом, ВГД представляет собой третий подход к решению задач гидродинамики [1].

Рис. 1. Три подхода к решению практической задачи

Процесс численного решения гидродинамической задачи состоит из четырёх основных этапов.

                                     I.      Препроцессинг: подготовка исходных данных

1)      определение физических границ задачи и объёмов, занятых жидкостью и/или газом;

2)      выбор математических моделей физических процессов и задание их параметров;

3)      задание граничных условий и их расстановка на физических границах;

4)      задание начальных условий (начальных распределений искомых переменных) в расчётных объёмах

                                   II.      Построение расчётной сетки: разбиение расчётных объёмов на элементарные ячейки

                                III.      Моделирование: сведение решаемых дифференциальных уравнений в частных производных к алгебраическим в каждой расчётной ячейке (аппроксимация) и итерационное решение алгебраических уравнений

                                IV.      Постпроцессинг: визуализация и анализ результатов

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

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

2. Программный комплекс FlowVision

Программный комплекс FlowVision [2][3] – многоцелевое решение для моделирования трёхмерных течений жидкости и газа, основанное на численном решении стационарных и нестационарных уравнений динамики. Исторически сложилось так, что FlowVision представлен двумя принципиально разными программными решениями: непараллельным FlowVision 2.x и параллельным FlowVision-HPC (3.x). Во FlowVision 2.x один программный модуль осуществляет все этапы моделирования задачи на одной вычислительной машине. Таким образом, его возможности ограничены производительностью и максимальным объёмом оперативной памяти этой машины. FlowVision 2.х работает под управлением операционной системы Microsoft Windows. FlowVision-HPC (HPC = High Performance Computing) состоит из непараллельного модуля пре- и постпроцессинга (препостпроцессора, ППП), параллельного расчётного модуля (солвера), совмещенного с сервером визуализации, способного работать как на одной вычислительной машине, так и на кластере из машин, и набора вспомогательных модулей для распределённой работы. ППП в настоящий момент существует только для ОС MS Windows, все остальные модули FlowVision-HPC являются мультиплатформенными. Визуализация во FlowVision-HPC является распределённой и частично параллельной: сервер визуализации осуществляет параллельное построение визуальных данных в векторном виде (генерирует трёхмерную сцену). Затем эти данные передаются на препостпроцессор, который осуществляет непараллельное построение изображения на экране. Плюсом данного подхода является то, что после того, как трёхмерная сцена сгенерирована, возможен её просмотр в разных режимах и при разных положениях наблюдателя без участия сервера визуализации и передачи данных с него. Минусом же данного подхода является то, что построение изображения  для вывода на экран осуществляется на одной вычислительной машине, поэтому размер и сложность сцены ограничены возможностями этой машины.

Ключевые особенности архитектуры FlowVision:

1)      генерация расчётной сетки осуществляется автоматически и требует участия пользователя лишь для задания начальной декартовой сетки и параметров адаптации;

2)      модули подготовки исходных данных и визуализации результатов объединены в один;

3)      препостпроцессор использует библиотеку OpenGL для рисования трёхмерных сцен;

4)      визуализация результатов возможна в процессе расчёта («онлайн-визуализация»);

5)      препостпроцессор может подключаться по сети к солверу и отключаться от него в любой момент;

6)      для организации параллельной работы солвера на разных вычислительных машинах используется MPI (Message Passing Interface).

Рис. 2. Архитектура FlowVision-HPC и FlowVision 2.x

3. Визуализация граничных поверхностей модели

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

FlowVision работает с полигональными моделями, состоящими из треугольников, но сам не содержит средств геометрического моделирования, и граничные поверхности импортируются пользователем из файлов, созданных во внешних системах. Полигональные модели, импортируемые в FlowVision, должны состоять из замкнутых непересекающихся (друг с другом и с самими собой) поверхностей, в противном случае они считаются некорректными. Граничные поверхности FlowVision бывают двух типов: неподвижная основная геометрия расчётной области и подвижные тела, которые могут перемещаться и деформироваться с течением модельного времени. Основная геометрия разбивает пространство на набор объёмов, вложенных друг в друга. Внешний бесконечный объём считается нерасчётным и игнорируется, остальные же объёмы образуют подобласти расчётной модели. Подвижные тела приписываются к тем или иным подобластям.

Рис. 3. Основная геометрия и подобласти

Полигональные модели состоят, подчас, из сотен тысяч многоугольников. Очевидно, что расставлять граничные условия на каждом полигоне было бы неэффективно и неэргономично даже при наличии мощных средств множественного выбора полигонов по некоторым заданным критериям. Поэтому FlowVision, на низком уровне работая с треугольниками, на уровне взаимодействия с пользователем оперирует группами – наборами треугольников. Если исходные полигональные модели из внешних систем содержат информацию о группировке (явно или неявно в виде информации о цвете, материале, граничных условиях и т.п.), то она импортируется. В противном случае группировка производится автоматически: в качестве групп формируются наборы треугольников, в которых каждый треугольник имеет хотя бы одного соседа по ребру такого, что угол между нормалями этой пары треугольников меньше некоторого заданного пользователем порогового угла. Автоматическая перегруппировка по пороговому углу доступна в любой момент подготовки расчётного проекта как для всей геометрии, так и для некоторой её части: пользователь может перегруппировать поверхность основной геометрии, поверхность подвижного тела, одну замкнутую поверхность, все поверхности одной подобласти, одну группу, набор групп с данным граничным условием. Механизмы ручной группировки треугольников во FlowVision на данный момент не предусмотрены.

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

Рис. 4. Группы

Для того чтобы видеть внутренние, скрытые части сложной геометрии, во FlowVision предусмотрен ряд средств:

·        сокрытие внешней стороны;

·        сокрытие структурных элементов;

·        отсечение плоскостями;

·        полупрозрачность.

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

Рис. 5. Сокрытие внешней стороны.
Подведите курсор мыши для переключения режимов

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

Отсечение плоскостью позволяет отбросить то, что находится с одной стороны от данной плоскости. Пользователь может создать любую плоскость. Все современные графические адаптеры поддерживают отсечение плоскостями аппаратно. Спецификация OpenGL требует поддержки как минимум 6 пользовательских секущих плоскостей [5].

Рис. 6. Отсечение плоскостью. Дополнительно построены и отображаются линии контура сечения

Полупрозрачность – очень удобное и визуально эффектное средство. Однако, реализация полупрозрачности требует больших вычислительных мощностей. Для корректной отрисовки полупрозрачных поверхностей необходимо выводить их в порядке от дальней по отношению к наблюдателю поверхности к ближней. В общем случае такое упорядочение требует сложной геометрической обработки всей сцены. Во FlowVision-HPC реализована технология, поддерживаемая современными графическими ускорителями и позволяющая организовать сортировку выводимых поверхностей на пиксельном уровне. Она не требует дополнительную геометрическую обработку и оптимизацию сцены: все элементы отрисовываются в произвольном порядке, поэтому такая полупрозрачность называется «не зависящей от порядка» (Order Independent Transparency, OIT). Использованный алгоритм – «отслаивание глубины» (Depth Peeling) [6] – является многопроходным: на каждом проходе осуществляется отрисовка всех полупрозрачных поверхностей сцены и отделение очередного полупрозрачного «слоя», видимого наблюдателю. В конце все полученные слои выводятся на экран от дальнего к ближнему как набор плоских изображений. Очевидно, что время отрисовки полупрозрачной части сцены прямо пропорционально количеству видимых друг сквозь друга слоёв. Число таких слоёв разумно ограничить, поскольку с его увеличением видимость падает.

Рис. 7. Полупрозрачность.
Подведите курсор мыши для переключения режимов

Для более производительной отрисовки полигональных моделей, геометрическая информация хранится в памяти графического ускорителя в виде объектов буферов вершин (Vertex Buffer Objects, VBO) [7]. Однако, для совместимости с более старыми версиями OpenGL, также поддерживаются классические массивы вершин в системной памяти.

Во FlowVision использована стандартная модель освещения OpenGL ­– модель Блинна-Фонга [8][9]. Освещённость складывается из диффузно отраженного света и зеркальных бликов. Так как зеркальные блики с одной стороны придают модели большую реалистичность, но с другой стороны порой засвечивают интересующие пользователя детали, в пользовательском интерфейсе предусмотрена легкодоступная функция их включения/отключения.

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

4. Геометрические объекты

При задании модели и при визуализации результатов расчёта, как правило, требуется локализация какой-то части пространства или поверхности. Для этого во FlowVision предусмотрены геометрические объекты. Пространство задаёт весь объём расчётной области без ограничений. Линия задаёт некоторую прямую линию. Плоскость образует сечения объёмов и контуры граничных поверхностей расчётной области. Параллелепипед, конус/цилиндр и эллипсоид/сфера задают фрагмент объёма расчётной области и предоставляют свою поверхность в виде набора частей (например, боковая поверхность и два основания усечённого конуса). Супергруппа представляет собой произвольный заданный набор групп и задаёт фрагмент граничной поверхности расчётной геометрии. Импортированный объект представляет собой произвольную полигональную модель, импортированную из внешнего файла. Требования замкнутости и отсутствия пересечений на импортированный объект не накладываются.

Рис. 9. Примеры геометрических объектов FlowVision

Все эти объекты применяются как при задании проекта FlowVision (например, для задания начальных условий в объёме цилиндра, отличных от условий вне цилиндра, для включения адаптации сетки в объёме параллелепипеда и т.п.), так и для создания на них слоёв визуализации и вычисления интегральных характеристик.

В разделе «Визуализация граничных поверхностей модели» упоминалось отсечение плоскостями. Именно геометрический объект плоскость может быть объявлен отсекателем и отсекать те части граничных поверхностей модели и слои визуализации, для которых пользователь включил отсечение плоскостями.

5. Слои визуализации

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

Во FlowVision 2.x все вычисления проводятся в рамках одного программного приложения, поэтому постпроцессор может обращаться напрямую к расчётной сетке с посчитанными данными.

Во FlowVision-HPC, в общем случае, препостпроцессор выполняется на «клиентской» вычислительной машине (рабочей станции), а солвер выполняется на нескольких расчётных машинах (от простой офисной локальной сети до вычислительного кластера), при этом каждая копия работает со своей частью расчётной сетки с данными, делая необходимые во время расчёта обмены с помощью MPI. Для визуализации некоторого слоя необходимо обработать данные, ограниченные геометрическим объектом запрошенного слоя на тех машинах, на которых они хранятся, и передать их в препостпроцессор для вывода на экран. Эту работу выполняет компонент приложения-солверасервер визуализации: данные обрабатываются параллельно на всех машинах, содержащих «затронутые» геометрическим объектом фрагменты сетки, затем полученные результаты собираются вместе и передаются по сети (локальной или глобальной) на препостпроцессор в векторном виде в некотором внутреннем формате, специфичном для каждого типа слоя. В случае работы солвера без сетевого соединения с препостпроцессором возможно периодическое сохранение таких векторных данных в файлы на диске, последующий перенос этих файлов на машину с препостпроцессором любым способом (например, на внешнем носителе) и их загрузка препостпроцессором с диска.

Для визуализации распределения скалярной величины вдоль некоторой линии предназначены графики, в сечении расчётного объёма или на некоторой поверхности – цветовые контуры (заливки) и изолинии, в пространстве – изоповерхности.

Для визуализации распределения векторной величины в сечении расчётного объёма, на некоторой поверхности или в пространстве предназначены векторы и линии тока.

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

6. Расчётная сетка

FlowVision использует прямоугольную расчётную сетку с локальным измельчением расчётных ячеек и аппроксимацией криволинейных границ расчётной области методом подсеточного разрешения геометрии.

Геометрическая модель расчётной области погружается в неравномерную трёхмерную декартову сетку. Граница расчётной области, составленная из треугольников, может иметь сложную форму. Вблизи границы производится булево вычитание нерасчётных объёмов из прямоугольных ячеек и образование расчётных ячеек-многогранников произвольной формы [2].

Рис. 10. Ячейка с подсеточным разрешением геометрии

Авторы работы [2] назвали такую сетку «сетка с подсеточным разрешением геометрии», поскольку никакого упрощения приграничных ячеек-многогранников не производится. Это в корне отличает данную технологию от технологии генерации расчетной сетки, известной как cut-cell метод, которая заменяет границу в ячейке плоским многоугольником.

После того, как определена начальная сетка, происходит дробление ячеек сетки в соответствии с заданными пользователем критериями адаптации. Адаптация всегда трёхмерная: исходная ячейка разбивается на 8 равных ячеек – это повышает уровень адаптации в данной области на 1. Процедура повторяется до заданного уровня.

Рис. 11. Дробление ячеек начальной сетки до 3-го уровня [2]

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

7. Цветовые контуры / изолинии

Цветовые контуры (цветовая заливка) и изолинии представлены двумя режимами отображения одного и того же слоя, так как эти два метода весьма близки и по визуальному представлению, и по технической реализации. Эти режимы в любой момент можно переключать с одного на другой. Пользователь задаёт палитру, в которой набору значений исследуемой величины ставятся в соответствие цвета. Во FlowVision автоматически строится полигональная поверхность, в узлах которой вычисляются значения исследуемой величины.

Рис. 12. Цветовые контуры модуля скорости вблизи поверхности автомобиля F1

В случае цветовых контуров эта поверхность текстурируется [10] и отображается на экране: для каждого треугольника по значениям в его вершинах вычисляются положения на квазинепрерывной цветовой шкале (одномерной текстуре), сгенерированной по дискретной палитре, затем  эти положения (значения текстурной координаты) OpenGL билинейно интерполирует для каждого пикселя треугольника. Разрешение текстуры много больше размера палитры, поэтому такую цветовую шкалу можно считать непрерывной. Однако, во FlowVision также предусмотрен режим ступенчатой текстуры, при котором между каждой парой цветов палитры генерируется не гладкий градиент, а ступенчатый переход с заданным пользователем числом градаций.

Рис. 13. Пример построения цветовых контуров и изолиний в треугольнике

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

Рис. 14. Точка пересечения изолинии с ребром
вычисляется линейной интерполяцией

По выбору пользователя данный слой строится либо на регулярной сетке, либо на расчётной сетке. Построение на регулярной сетке возможно только на плоскости, при этом в сечении расчётной модели, заданном плоскостью, строится равномерная сетка прямоугольников с шагом, заданным пользователем. Построение на расчётной сетке возможно либо на любом геометрическом объекте, имеющем ограниченную полигональную поверхность, либо на плоскости, в которой строится один полигон, охватывающий все сечения расчётной модели в этой плоскости. Далее FlowVision производит рассечение исходной полигональной поверхности расчётной сеткой. Очевидно, что все вновь полученные узлы результирующей поверхности оказываются на границах ячеек расчётной сетки, поэтому для повышения точности визуализации предусмотрен режим «двойного разрешения», в котором каждый фрагмент поверхности, попавший в расчётную ячейку, рассекается тремя дополнительными плоскостями XY, YZ и XZ, проходящими через центр ячейки.

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

Рассечение полигональной поверхности слоя расчётной сеткой состоит из двух этапов: рассечение плоскостями сетки (начальной и адаптированной), и – в случае присутствия в ячейке граничной поверхности – рассечение ею. Для отсечения одной сложной потенциально невыпуклой полигональной поверхности другой используется алгоритм двоичного разбиения пространства ­– BSP (Binary Space Partitioning) [11]. В произвольном порядке выбирается полигон отсекателя и производится разбиение пространства (в границах параллелепипеда обрабатываемой ячейки) его плоскостью на два подпространства (с «левой» и «правой» стороны относительно данного полигона отсекателя), далее то же самое повторяется для каждого из них. Такое разбиение проводится рекурсивно: каждое подпространство делится дальше, пока в нём есть полигоны отсекателя. В процессе формируется бинарное дерево подпространств. Когда построение BSP-дерева завершено, совокупность всех его листьев, являющихся «левыми» ветвями своих родительских узлов, даёт ту часть отсекаемой поверхности, которая лежит «слева» от отсекателя, а совокупность всех «правых» листьев – ту часть, которая лежит «справа».

Рис. 16. Двумерный пример построения BSP-дерева

Вычисление значения в каждой точке выполняется (по выбору пользователя) либо быстро приближённо – берётся значение из центра ячейки, в которую попала точка (центра одной из ячеек, если точка попала на границу между двумя или более ячейками), либо более медленно и точно – интерполяцией между несколькими ячейками. Для этого сначала вычисляются значения в вершинах параллелепипеда ячейки, в которую попала точка, взвешенным осреднением значений из центров всех ячеек, содержащих вершину. Затем вычисляется значение в точке внутри параллелепипеда трилинейной интерполяцией по трём направлениям X, Y, Z.

Рис. 17. Цветовые контуры и изолинии давления в сечении смесителя

 

8. Графики

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

Рис. 18. Пример графика: распределение давления вдоль окружности,
график раскрашен значением вертикальной компоненты скорости

9. Изоповерхности

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

 

Рис. 19. Фрагменты двух изоповерхностей в тетраэдре

Данный слой также может быть построен либо на регулярной сетке, либо на расчётной сетке (во FlowVision-HPC изоповерхности на расчётной сетке пока не поддерживаются). В случае регулярной сетки в заданной (геометрическим объектом) области строится равномерная сетка параллелепипедов с шагом, заданным пользователем, затем каждый параллелепипед разбивается на 5 тетраэдров.

Если задано использование расчётной сетки, то тетраэдризуется попавшая в заданную область часть расчётной сетки (с адаптацией, но без подсеточного разрешения геометрии). Чтобы в полученной изоповерхности не было разрывов, тетраэдризация сетки должна быть такой, чтобы в ней также не было разрывов. Для этого все грани каждой ячейки триангулируются, затем на полученных треугольниках строятся тетраэдры в четвёртой вершиной в центре ячейки.

Рис. 20. Варианты триангуляции грани ячейки в зависимости от
наличия средней точки грани / средних точек рёбер

В ячейках с подсеточным разрешением геометрии производится отсечение построенных изоповерхностей проходящими в ячейках поверхностями геометрии (используется алгоритм BSP).

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

Рис. 21. Полупрозрачные изоповерхности

10. Векторы

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

Рис. 22. Векторы скорости в сечении объёма носовых пазух.
Раскрашены модулем скорости

11. Линии тока

Линии тока – ещё один метод визуализации векторного поля, показывающий, по каким траекториям бы двигались безынерционные частицы под действием этого поля. Линии тока во FlowVision могут быть построены в пространстве или в объёме любого геометрического объекта, имеющего замкнутый объём. Пользователь должен задать источник частиц – ещё один геометрический объект, в объёме или на поверхности которого строятся начальные точки траекторий как равномерная сетка с заданным шагом, и «шаг по времени» для моделирования пролёта частиц. FlowVision находит ячейки расчётной сетки, содержащие начальные точки траекторий, и последовательно трассирует движение воображаемых частиц из ячейки в ячейку до выхода из расчётной области. Длины траекторий ограничены во избежание зацикливания вихревых образований, возможных из-за дискретности расчётной сетки и шага по времени. Траектории отображаются кривыми (ломаными) линиями со стрелками или без. Линии опционально могут быть раскрашены значением заданной скалярной величины.

Рис. 23. Линии тока в смесителе. Раскрашены модулем скорости

Во FlowVision 2.х реализовано анимационное представление линий тока в виде потока частиц (слой вспышки). Так как он основан на быстром доступе к расчётной сетке, во FlowVision-HPC из-за его распределённой архитектуры этот слой не реализован.

Рис. 24. Анимационный слой вспышки

12. Анализ расчётной сетки

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

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

Рис. 25. Расчётная сетка с адаптацией

Рис. 26. Декомпозиция сетки по процессорам

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

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

Рис. 27. Отладочная ячейка

13. Интегральные характеристики

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

  

Рис. 28. Пример вывода интегральных характеристик по объёму и по поверхности

14. Сохранение изображений

FlowVision предоставляет пользователю возможность строить изображения заданного пиксельного размера и сохранять их в файлы в формате BMP (Windows Bitmap) или TGA (TARGA Bitmap). Изображения строятся во внеэкранном буфере (P-буфере OpenGL). Возможна автоматическая запись последовательности изображений: после завершения расчёта очередного шага по времени и онлайн-визуализации данных на нём записывается очередной кадр. Это удобно для создания видеопрезентаций.

FlowVision может сохранять историю расчёта (делать полное сохранение данных с заданной периодичностью) с возможностью последующего просмотра этой истории и визуализации данных на любом сохранённом шаге. Возможен автоматический пробег по сохранённой истории с записью изображений на каждом шаге.

Рис. 29. Пример видеофайла, показывающего течение моделируемого процесса

15. Презентационная графика

Во FlowVision-HPC предусмотрен ряд возможностей, предназначенных для улучшения восприятия и повышения эффектности графического материала.

Очень часто задача является симметричной, и расчёт ведется на половине модели. Для того чтобы зеркально отобразить полученные результаты и получить полную картину, предназначены зеркалирующие плоскости. Любая плоскость (геометрический объект) может быть объявлена зеркалирующей, но их максимальное число не может превышать 3. Каждая зеркалирующая плоскость удваивает вычислительные затраты на построение изображения.

Рис. 30. Зеркалирующая плоскость

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

Рис. 31. Параллельное и центральное проецирование.
Подведите курсор мыши для переключения режимов

Для повышения реалистичности блестящих поверхностей возможно наложение на них карты окружения (Environment Map) [12] [10]. Кубическая карта окружения представляет собой набор из 6 изображений, являющихся проекциями некоторого ландшафта на 6 граней куба. Для построения отражения ландшафта в некотором объекте OpenGL вычисляет вектор отражения луча наблюдения для каждого пикселя объекта, определяет грань куба, в которую попадает полученный отражённый луч, и точку на ней, из которой затем осуществляет выборку пикселя текстуры. То есть выполняется упрощённая обратная трассировка луча: наблюдатель – объект – куб.

Рис. 32. Использование карты окружения

16. Контроль состояния расчёта

            Состояние расчёта поступает с солвера на каждом шаге и отображается препостпроцессором в виде таблицы. История невязок уравнений сохраняется в файле и отображается в виде графиков.

Рис. 33. Контроль состояния расчёта

17. Заключение

Таким образом, FlowVision предоставляет широкие возможности визуализации и анализа решения в заданных объёмах, сечениях и на поверхностях. В них входит визуализация скалярных полей (графики, цветовые контуры, изолинии и изоповерхности), векторных полей (векторы и линии тока) и особенностей расчётной сетки, а также вычисление интегральных характеристик. Система визуализации является частично параллельной (параллельная обработка трёхмерных данных, непараллельное построение двумерного изображения) и позволяет отображать и анализировать промежуточные результаты в ходе решения («онлайн-визуализация»).

В ходе дальнейшего развития архитектуры и возможностей визуализации программного комплекса FlowVision планируется:

·        создание мультиплатформенного препостпроцессора;

·        оптимизация работы с очень большими геометрическими моделями (в том числе автоматическое понижение детализации для визуализации);

·        оптимизация передачи данных с сервера визуализации на препостпроцессор: передавать изменяющиеся значения, но не передавать скелетные данные, не меняющиеся в том случае, если не меняется расчётная сетка;

·        реализация объёмной визуализации;

·        перенос геометрических и прочих вычислений на процессоры графического ускорителя (GPU);

·        реализация возможности записи видеофайла в дополнение к возможности записи последовательности изображений;

·        реализации возможности наложения текстур на граничные поверхности модели для повышения реалистичности изображения (презентационная графика).

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

[1]         J. D. Anderson, Jr. Computational Fluid Dynamics. The Basics with Applications. // McGraw-Hill series in mechanical engineering, 1995. pp. 4–6.

[2]         A. A. Aksenov, A. A. Dyadkin, V. I. Pokhilko Overcoming of Barrier between CAD and CFD by Modified Finite Volume Method [Text] // Proc. of «1998 ASME Pressure Vessels and Piping Division Conference», San Diego, ASME PVP, 1998, Vol. 377-1.

[3]         Официальный веб-сайт FlowVision, http://www.flowvision.ru

[4]         OpenGL 2.0 specification, §3.5.2 «Stippling»

[5]         OpenGL 2.0 specification, §2.12 «Clipping»

[6]         C. Everitt. Interactive order-independent transparency. // Technical Report, NVIDIA Corporation, 2001.

[7]         OpenGL 2.0 specification, §2.9 «Buffer Objects»

[8]         OpenGL 2.0 specification, §2.14 «Colors and Coloring»

[9]         J. F. Blinn. Models of light reflection for computer synthesized pictures. // Proc. 4th annual conference on computer graphics and interactive techniques, 1977: 192

[10]     OpenGL 2.0 specification, §3.8 «Texturing»

[11]     W. Thibault, B. Naylor. Set Operations on Polyhedra Using Binary Space Partitioning Trees // Computer Graphics (SIGGRAPH '87), 1987.

[12]     Perfect Reflections and Specular Lighting Effects with Cube Environment Mapping. // Technical Brief, NVIDIA Corporation, 2000.




 
VISUALIZATION SYSTEM OF CFD SOFTWARE FLOWVISION
 

V.A. Kutin
vitaly@tesis.com.ru
TESIS Ltd., Moscow, Russia

Abstract

This paper describes the visualization system implemented in CFD (Computational Fluid Dynamics) software FlowVision. Attention is paid to the specifics conditioned by modern distributed cluster architectures.

Keywords: scientific visualization, data visualization, graphical interpretation, computer graphics, computational fluid dynamics, modeling flows, compute cluster, high performance computing, FlowVision, OpenGL.

References

[1] J. D. Anderson, Jr. Computational Fluid Dynamics. The Basics with Applications. McGraw-Hill series in mechanical engineering, 1995. pp. 4–6.
[2] A. A. Aksenov, A. A. Dyadkin, V. I. Pokhilko Overcoming of Barrier between CAD and CFD by Modified Finite Volume Method [Text] Proc. of «1998 ASME Pressure Vessels and Piping Division Conference», San Diego, ASME PVP, 1998, Vol. 377-1.
[3] Official website of FlowVision-program for constructing and modeling flows [Russian]. Available at: http://www.flowvision.ru
[4] OpenGL 2.0 specification, §3.5.2 «Stippling». Available at: http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf
[5] OpenGL 2.0 specification, §2.12 «Clipping». Available at: http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf
[6] C. Everitt. Interactive order-independent transparency. Technical Report, NVIDIA Corporation, 2001.
[7] OpenGL 2.0 specification, §2.9 «Buffer Objects». http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf
[8] OpenGL 2.0 specification, §2.14 «Colors and Coloring». http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf
[9] J. F. Blinn. Models of light reflection for computer synthesized pictures. Proc. 4th annual conference on computer graphics and interactive techniques, 1977: 192
[10] OpenGL 2.0 specification, §3.8 «Texturing». http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf
[11] W. Thibault, B. Naylor. Set Operations on Polyhedra Using Binary Space Partitioning Trees Computer Graphics (SIGGRAPH '87), 1987.
[12] Perfect Reflections and Specular Lighting Effects with Cube Environment Mapping. Technical Brief, NVIDIA Corporation, 2000.