Перейти к статье

 

Модели с периодической структурой

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

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

Начальные установки

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

tile {x <period> | y <period> | z <period>}
[x <period>] [y <period>] [z <period>]

Значения period задают вектор смещения участка от одной границы до другой. Задайте команду tile для каждой координатной оси, например:

tile x 1
tile y 1
tile z 1

Подобные узлы, полученные с помощью заданных векторов смещения, можно отобразить посредством команды:

tile debug node <id>

Чтобы удалить векторы смещения, используйте команду:

tile off

Создание наборов узлов

После задания векторов смещения можно определить периодические граничные условия с помощью команды:

tile nodeset <start_id>

При этом создаются наборы узлов с учетом всех векторов смещения участков. Они следуют друг за другом; идентификационные номера начинаются с заданного номера start_id. Чтобы удалить созданные наборы, используйте команду:

tile off

Сглаживание сетки

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

smooth volume <volume_id_range> [global [float <dim>] ]

Используйте параметр global, если обрабатываете одновременно нескольких объемов. Если вы хотите иметь возможность перемещать узлы на поверхностях и кривых, а также вершины в трехмерном пространстве, то используйте комбинацию параметров float 3. Задание float 2 позволяет узлам и вершинам перемещаться в двумерном пространстве, оставаясь на поверхности. Часто бывает полезно зафиксировать какие-либо узлы; это выполняется с помощью команды node position fixed (см. ниже). 

Пример

# make the geometry
#{brick_size=500}
brick wid {brick_size}
brick wid {brick_size}
body 2 move {brick_size} 0 0
brick wid {brick_size}
body 3 move {brick_size} {brick_size} 0
brick wid {brick_size}
body 4 move 0 {brick_size} 0
brick wid {brick_size}
body 5 move 0 0 {brick_size}
brick wid {brick_size}
body 6 move {brick_size} 0 {brick_size}
brick wid {brick_size}
body 7 move {brick_size} {brick_size} {brick_size}
brick wid {brick_size}
body 8 move 0 {brick_size} {brick_size}
merge all

# mesh it
vol all int 3
mesh vol all

# set the tiling vectors
tile x {brick_size*2}
tile y {brick_size*2}
tile z {brick_size*2}
tile debug node 256
tile debug node 245

# set the tiling nodesets
tile nodeset

# mess up the mesh quality
# volume all smooth scheme randomize
# smooth volume all
surface all smooth scheme randomize
smooth surface all
draw hex all

# fix the mesh quality
node in volume all position fixed
node in surface all position free
volume all smooth scheme laplac
# volume all smooth scheme untangle beta 0.08
smooth volume all global float 3
draw hex all