С наступившим 2018-м годом! Для численных экспериментов в области сеточных методов, полезно иметь возможность строить простые сетки. Рассмотрим, как создается неструктурированная 2D сетка в Gmsh 3.0.
2D сетка в Gmsh. Общие сведения
Программу (доступна версия 3.0 для Windows) можно скачать здесь. Документация на английском (pdf).
Есть графический интерфейс. Вот он:
Программа трехмерная. В данной статье работать будем с плоским прямоугольником с габаритами 1×0.5.
Посмотрите на рисунок, где показан интерфейс. В области инструментов раскрыта ветка Modules. Есть три модуля: Geometry, Mesh и Solver.
План такой:
- Создать в дереве модуля Geometry геометрию нужного типа
- Задать в дереве модуля Geometry регионы для ГУ
- Нажать в дереве модуля Mesh кнопку построения сетки
Чтобы скрыть или показать Журнал, щелкните на строку информации.
В верхней части графического окна отображается подсказка. В данный момент она говорит о том, что для завершения выбора объектов, следует нажать «e», а для прерывания команды — нажать «q». Это полезно запомнить.
При работе, каждой команде GUI (по созданию геометрии) соответствует вызов скриптовой функции. Скрипт имеет расширение geo (см. заголовок окна). Подробнее о скрипте здесь. Вот, как посмотреть на скрипт:
Геометрия
Чтобы создать прямоугольник, работаем с модулем Geometry.
Обратите внимание на подсказку: «e» — добавить прямоугольник, «q» — отказ. Вот такой прямоугольник должен получиться:
Сетка
Строим сетку при помощи команды 2D в модуле Mesh.
Далее — File и Export (Ctrl+E) и выбираем из кучи вариантов формат msh. Файл сетки получится вот такой: скачать. Однако, тут только точки и элементы. Не хватает регионов для задания граничных условий.
Правильный файл сетки должен быть таким: скачать. О том, как задать регионы — в следующем параграфе.
Задание регионов в Gmsh
Вводим в окошке Physical Group Context имя нового региона, переключаемся в графическое окно, выбираем нужную геометрию, жмем «e». Вводим новое имя, опять выбираем и жмем «e» и так далее. Группа может быть создана для поверхности и для линии. При построении сетки, на линиях-регионах тоже создаются элементы (в дополнение к интересующим нас двумерным треугольникам). Вы сможете видеть их в текстовом файле после экспорта сетки.
Контроль
Проверка статистики по геометрии (Ctrl+I) или Tools->Statistics. На рисунке показано: у нас 4 точки, 4 линии, одна поверхность, нет тел, и 4 физических региона для задания ГУ (я сделал снимок ещё до добавления 5-го внутреннего региона).
О структуре файла сетки
Gmsh поддерживает массу форматов на выбор при экспорте сетки. Подробно здесь. Файл сетки при экспорте в формат .msh — это текстовый ASCII файл. Такой текстовый файл для сетки, показанной на самом первом рисунке, имеет следующий вид:
$MeshFormat 2.2 0 8 $EndMeshFormat $PhysicalNames 5 1 1 "left_BC" 1 2 "right_BC" 1 3 "top_BC" 1 4 "bottom_BC" 2 5 "internal_region" $EndPhysicalNames $Nodes 77 1 0 0 0 2 1 0 0 3 1 0.5 0 ... 76 0.7795703457551809 0.3237713342832984 0 77 0.2204296542448191 0.3237713342832985 0 $EndNodes $Elements 152 1 1 2 4 1 1 5 ... 152 2 2 5 1 29 76 74 $EndElements
Итого, 77 узлов и 152 элемента. Пять групп: левая сторона, правая, верхняя, нижняя и внутренняя область. Имейте ввиду, что если задать хоть один регион, надо задавать и все остальные, иначе при экспорте в выходном файле будут только регионы, что созданы. Если же не задавать регионы вообще, то экспортируется вся сетка.
Формат элемента:
1 1 2 4 1 1 5
1 — номер элемента, 1 — линия, 2 — 2 тега, 4 — тег области (четвертая — bottom_BC), 1 — тег геометрии (линия 1), 1 — номер первого узла, 5 — номер второго узла.
ещё пример:
152 2 2 5 1 29 76 74
152 — номер элемента, 2 — плоский, 2 — 2 тега, 5 — тег области (пятая — internal_region), 1 — тег геометрии (линия 1), [29 76 74] — узлы элемента.