2D сетка в Gmsh 3.0

С наступившим 2018-м годом! Для численных экспериментов в области сеточных методов, полезно иметь возможность строить простые сетки. Рассмотрим, как создается неструктурированная 2D сетка в Gmsh 3.0.

2D сетка в GMSH - Результат построения неструктурированной сетки в прямоугольной области
Результат построения неструктурированной двухмерной сетки в прямоугольной области.

2D сетка в Gmsh. Общие сведения

Программу (доступна версия 3.0 для Windows) можно скачать здесь. Документация на английском (pdf).

Есть графический интерфейс. Вот он:

2D сетка в GMSH - Графический интерфейс Gmsh 3.0
2D сетка в GMSH — Графический интерфейс Gmsh 3.0.

Программа трехмерная. В данной статье работать будем с плоским прямоугольником с габаритами 1×0.5.

Посмотрите на рисунок, где показан интерфейс. В области инструментов раскрыта ветка Modules. Есть три модуля: Geometry, Mesh и Solver.

План такой:

  1. Создать в дереве модуля Geometry геометрию нужного типа
  2. Задать в дереве модуля Geometry регионы для ГУ
  3. Нажать в дереве модуля Mesh кнопку построения сетки

Чтобы скрыть или показать Журнал, щелкните на строку информации.

В верхней части графического окна отображается подсказка. В данный момент она говорит о том, что для завершения выбора объектов, следует нажать «e», а для прерывания команды — нажать «q». Это полезно запомнить.

При работе, каждой команде GUI (по созданию геометрии) соответствует вызов скриптовой функции. Скрипт имеет расширение geo (см. заголовок окна). Подробнее о скрипте здесь. Вот, как посмотреть на скрипт:

2D сетка в GMSH - Редактирование скрипта
2D сетка в GMSH — Редактирование скрипта. Подробнее о скрипте Gmsh в других статьях.

Геометрия

Чтобы создать прямоугольник, работаем с модулем Geometry.

2D сетка в GMSH - Вставка прямоугольника
Вставка прямоугольника. При вставке прямоугольника, создаются не только линии, но и поверхность. Поэтому на прямоугольнике можно строить 2D-сетку сразу после его создания.

Обратите внимание на подсказку: «e» — добавить прямоугольник, «q» — отказ. Вот такой прямоугольник должен получиться:

Прямоугольник добавлен
Прямоугольник добавлен.

Сетка

Строим сетку при помощи команды 2D в модуле Mesh.

Сетка построена
Сетка построена.

Далее — File и Export (Ctrl+E) и выбираем из кучи вариантов формат msh. Файл сетки получится вот такой: скачать. Однако, тут только точки и элементы. Не хватает регионов для задания граничных условий.

Правильный файл сетки должен быть таким: скачать. О том, как задать регионы — в следующем параграфе.

Задание регионов в Gmsh

Создание регионов для ГУ
Создание регионов для ГУ (граничных условий).

Вводим в окошке Physical Group Context имя нового региона, переключаемся в графическое окно, выбираем нужную геометрию, жмем «e». Вводим новое имя, опять выбираем и жмем «e» и так далее. Группа может быть создана для поверхности и для линии. При построении сетки, на линиях-регионах тоже создаются элементы (в дополнение к интересующим нас двумерным треугольникам). Вы сможете видеть их в текстовом файле после экспорта сетки.

Контроль

Проверка статистики по геометрии (Ctrl+I) или Tools->Statistics. На рисунке показано: у нас 4 точки, 4 линии, одна поверхность, нет тел, и 4 физических региона для задания ГУ (я сделал снимок ещё до добавления 5-го внутреннего региона).

2D сетка в GMSH - Проверка статистики по геометрии (Ctrl+I)
Проверка статистики по геометрии (Ctrl+I).

О структуре файла сетки

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] — узлы элемента.

Файл сетки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.