четверг, 7 июля 2011 г.

Gmsh. Управление

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

Итак, при запуске Gmsh'а вы видите 2 окна: графическое окно и окно меню. Управление в графическом окне осуществляется посредством мыши: левая кнопка мыши - поворот модели, правая кнопка - перенос, средняя кнопка (скролл) - масштабирование. Сразу хочу отметить, что такого удобного управления мышью нет ни в одном триангуляторе, с которым я когда-либо работал. Это действительно большой плюс Gmsh'а.

Графическое окно имеет небольшую панель управления со статус-баром, с которых и начнем рассмотрение элементов управления (Внимание! Все картинки и меню, представленные ниже, актуальны для версии Gmsh 2.4.2!).
Рассмотрим все элементы панели управления графического окна слева направо.
1. Select active model (выбрать действующую модель - т.е. ту модель, с которой в данный момент вы будете работать). Честно говоря, я этим никогда не пользовался.
2,3,4. Set view (установить вид). Это очень полезные кнопки. Они отвечают за поворот координатных осей, т.е. за выбор вида. Всего существует 24 варианта. Шесть основных можно выбрать следующим образом:
a. кнопка X (горячая клавиша Alt+X) - вид +X
b. горячая клавиша Alt+Shift+X - вид -X
c. кнопка Y (горячая клавиша Alt+Y) - вид +Y
d. горячая клавиша Alt+Shift+Y - вид -Y
e. кнопка Z (горячая клавиша Alt+Z) - вид +Z
f. горячая клавиша Alt+Shift+Z - вид -Z
Примечание. Я всегда пользуюсь видом -Y. Мне он кажется наиболее удачным для визуализации модели.
5. Rotate (повернуть). Остальные варианты расположения осей достигаются путем нажатия 5-ой кнопки статус-бара, а именно, поворотом осей на 90 градусов против часовой стрелки (с зажатым Shift'ом - по часовой).
6. Set unit scale (установить единичный масштаб). Эта кнопка предназначена для масштабирования модели по размеру графического окна. Полезная штука, если вы увеличили интересующую вас область для более детального просмотра, а потом решили вернуться к виду модели целиком.
7. Toggle projection mode (переключить тип проекции). Существует 2 проекции - orthographic (по умолчанию) и perspective. Никогда этим не пользовался.
8. Toggle mouse selection (переключить выделение мышью). Не знаю что это такое. Наверное, используется при задании геометрии в графическом окне (мы таким не занимаемся - сразу используем .geo файл).
9-12. Эти кнопки вообще не активны. Они используются для визуализации результатов.
Далее идет строка, в которой написано, в каком разделе (модуле) вы сейчас находитесь: Geometry, Mesh, Solver, Post-processing.
После этого идет статус-бар, в котором выдаются сообщения Gmsh'а о процессе построения сетки и т.д. Статус бар также полезно использовать для просмотра связей между линиями и точками или определения координат точек, которые заданы в геометрии модели. Наведя мышью на интересующую вас линию, посмотрите в статус бар. Там вы увидите текст типа: Line 4 {3, 4}. Так что сразу станет понятно, что это линия с номером 4, идет от точки 3 до точки 4. Или наведите на точку. В статус баре появится: Point 4 {1, 0, 1}{cl:0.4}. Снова все понятно.

Переходим теперь к окну меню. Оно имеет меню File, Tools, Help и переключатель модулей (разделов) (Geometry, Mesh, Solver, Post-processing) с контекстно-зависимыми кнопками (в том смысле, что набор кнопок разный для разных модулей). Поскольку мы используем Gmsh только для задания геометрии и построения сетки (по крайней мере - пока), разделы Solver и Post-processing рассматривать не будем. Пройдемся по основным кнопкам первых двух модулей.

Geometry
Поскольку геометрию мы задаем на встроенном языке через .geo файл, нам понадобятся только 2 кнопки: Edit и Reload.
Кнопка Edit вызывает редактор текущего .geo файла. В Windows по умолчанию это блокнот. Однако вы можете изменить программу редактор в меню Tools -> Options -> раздел General -> вкладка Output -> строка Text editor command (заменить notepad.exe на ваш редактор):
После редактирования .geo файла вам необходимо будет его сохранить и перезагрузить, чтобы изменения вступили в силу и отобразились в Gmsh'е. Для перезагрузки геометрии используется кнопка Reload.

Mesh
Модуль Mesh содержит кнопки для построения сетки, и всего, что с ней связано. Нам понадобятся:
2D - строит двумерную (поверхностную) сетку (автоматически вызывает вначале 1D - построение одномерной сетки).
3D - строит трехмерную сетку (автоматически вызывает вначале 2D).
Second order - построение сетки с элементами второго порядка (есть возможность построения сеток более высокого порядка - 3-го, 4-го и 5-го, однако делается это через .geo файл. НО! В версии Gmsh 2.5.0 сетку высокого порядка можно построить через GUI - там есть соответствующие кнопки).
Refine by splitting - измельчение за счет разбиения - имеющиеся элементы сетки бьются внутри себя для получения более мелкой сетки. Вообще говоря, это не всегда приводит к качественному разбиению, поэтому пользоваться этой кнопкой нужно очень осторожно. Я рекомендую измельчать сетку через характеристическую длину, а не так.
Optimize и Optimize (Netgen) - оптимизация сетки, для получения более качественных элементов, по "своему" алгоритму и по алгоритму Netgen'а соответственно.

Tools
Рассмотрим теперь основные возможности, которые дает Gmsh в меню Tools.
Options. Gmsh имеет обширный выбор настроек для каждого из модулей + общие (General) настройки. В версии 2.4.2 по умолчанию стоят такие настройки визуализации сетки, что после построения тетраэдрального разбиения в графическом окне можно увидеть только это:
Понятно, что тетраэдральная сетка построилась. Но как ее разглядеть? Измените следующие настройки в меню Tools -> раздел Mesh -> вкладка Visibility -> Surface faces и Volume faces:
Теперь сетка приняла более цивилизованный вид. Чтобы каждый раз при новом запуске Gmsh'а не лазить в настройки, их можно сохранить на локальной машине. Делается это через меню File -> Save Default Options.
Описание других опций планирую сделать отдельно, т.к. их очень много и не все они представлены в меню Tools -> Options.

Plugins. Плагины - отдельные модули, расширяющие возможности Gmsh'а. Я их по-настоящему еще ни разу не использовал. Хотя там есть довольно интересные функции.

Visibility. Видимость - очень полезный инструмент, которым вы, как и я, будете пользоваться очень часто. Вспомним модель, которую мы рассматривали в записи "Gmsh. Знакомство 3D", - сфера в параллелепипеде. После построения тетраэдральной сетки и включения Surface faces и Volume faces (если эти настройки еще не включены, см. выше) вы увидите только треугольную сетку на гранях параллелепипеда. Как увидеть сферу? Для этого мы и воспользуемся "видимостью". Вообще говоря, раньше мы уже работали с ней, когда искали нужные номера линий и поверхностей для задания геометрии модели. Однако тогда мы имели дело с номерами геометрических элементов. Сейчас мы будем работать с номерами физических объектов (и это еще одна причина использовать физические сущности - в дополнение к тем, которые я озвучивал раньше). Для этого на вкладке List browser в списке внизу окна выбираем Physical groups вместо Elementary entities:
Тепер мы можем выбрать среди тех элементов, которые мы обозначили в .geo файле с ключевым словом Physical, необходимые нам для просмотра. Например, мы хотим увидеть только сферу (ну, то есть, конечно, шар - просто так уж повелось - сферой называть). Выбираем в списке объем с номером 4002 и нажимаем Apply:
В результате вы увидите:
Конечно, для того, чтобы просмотреть тот или иной объект, необязательно объявлять его как "физический". Можно просматривать также объекты через вкладку Elementary entities. Там представлены вообще все геометрические элементы, которые есть в данной модели. Просто через Physical groups легче найти нужное.

Clipping. Сечение - наверное, еще более важный инструмент просмотра сетки, чем Visibility. Ведь как иначе заглянуть внутрь модели, если не сделать сечение? Gmsh позволяет делать сечение геометрии (никогда не пользовался - наверное, модели слишком простые) и сетки. Интерфейс следующий:
И для геометрии и для сетки можно сделать сечение либо плоскостями (Planes) либо параллелепипедом (Box). Для этого нужно выбрать соответствующую вкладку.
Planes. Можно задать 6 секущих плоскостей коэффициентами A, B, C, D из уравнения плоскости A*x + B*y + C*z + D = 0. Возможно также интерактивное "движение" плоскостей с помощью мыши. Для этого подвигайте мышью с зажатой левой кнопкой в поле ввода числа для коэффициента. Вы увидите как меняется плоскость сечения и, соответственно, само сечение сетки.
Box. Cx, Cy, Cz - координаты центра секущего параллелепипеда. Wx, Wy, Wz - длины соответствующих сторон симметрично относительно центра. Таким образом, заданные по умолчанию значения (Cx, Cy, Cz) = (0, 0, 0) и (Wx, Wy, Wz) = (1, 1, 1) определяют секущий параллелепипед в пределах от (-0.5, -0.5, -0.5) до (0.5, 0.5, 0.5).
Примерно такое сечение сетки плоскостью вы получите, определив коэффициент D:
Если вы поставите галочку напротив Keep whole elements (сохранить целые элементы), то получите еще более интересную картину, глядя на которую уже можно говорить о качестве тетраэдров (конечно, чисто визуально), о сгущении сетки и т.д.

Manipulator. Управление в графическом окне - поворот, перемещение, масштабирование. Все это можно сделать и мышью. Обновлено 05.04.2012 Здесь я, конечно, погорячился. Манипулятор очень полезен в тех случаях когда нужно сделать серию картинок, поверхнутых и отмасштабированных одинаковым образом. В этом случае пользоваться мышью, очевидно, бесполезно - одинаково все равно не получится.

Statistics. Статистика - полезный инструмент. Показывает информацию о количестве элементов геометрии, сетки и постпроцессора, а также некоторые данные о качестве сетки. Чтобы посмотреть, что означают загадочные Gamma, Eta и Rho, я полез в документацию и обнаружил там преинтереснейший FAQ, который, помимо объяснения этих коэффициентов, содержит еще кучу полезной информации. Поэтому я решил перевести FAQ на русский язык и выложить в этом блоге. А по поводу качества сетки:
Gamma = (приближенно) радиус вписанной сферы / радиус описанной сферы
Eta = (приближенно) объем тетраэдра в степени (2/3) / сумма длин ребер в степени 2
Rho = (приближенно) наименьшая длина ребра / наибольшая длина ребра

Message Console. Консоль сообщений - здесь содержатся все сообщения Gmsh'а (служебные, об ошибках, предупреждениях и т.д.).

3 комментария:

  1. Подскажите пожалуйста, какое максимально допустимое количество элементов можно задать в GMSH?
    У меня задача: скомпоновать бетонный кубик с ребром 150 мм. Состоит из цементно-песчаной матрицы с включениями в виде гранитного щебня. Так вот, количество камешков на этот кубик - 1500 шт. Сможет ли потом GMSH правильно сгенерировать сетку?

    ОтветитьУдалить
  2. Я не думаю, что Gmsh имеет какое-либо ограничение на количество задаваемых элементов. Скорее всего, все упирается в оперативную память. Чем больше память, тем более "правильную" сетку вам удастся построить. Для обычного персонального компьютера (2 - 4 Гб оперативной памяти) я думаю можно рассчитывать на 1 - 2 млн тетраэдров (а может и побольше).
    Если же в процессе задания геометрии Gmsh выдаст ошибку о превышении допустимого количества геометрических элементов, поделитесь, пожалуйста. Это было бы очень любопытно.

    ОтветитьУдалить
  3. Обязательно поделюсь. Спасибо!

    ОтветитьУдалить