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

 

Наборы узлов и сторон

Общие положения

Граничные условия могут  накладываться на формируемую конечно-элементную модель с помощью наборов узлов и наборов сторон, относящихся к объектам свойств (типа Genesis). Такие объекты используются как универсальные контейнеры данных о граничных условиях. Узлы, элементы и их грани группируются в соответствующие наборы с присвоением им уникальных идентификаторов (ID). Эти наборы могут затем записываться в экспортируемые файлы в формате Exodus II, посредством которых данные конечно-элементной модели передаются различным программам расчета.

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

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

Ниже рассматриваются следующие вопросы:

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

Наборы узлов могут быть созданы из групп узлов с учетом их принадлежности объемам, поверхностям, кривым или вершинам. Возможно добавление в набор отдельных узлов. Одни и те же узлы могут принадлежать более чем одному набору.

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

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

nodeset <nodeset_ID> {curve | surface | volume | vertex | node} <range> [remove]

sideset <sideset_ID> group <ID_range> [remove]

sideset <sideset_ID> {curve | surface | edge | face | tri} <ID_range> remove

sideset <sideset_ID> edge <ID_range> [wrt {{tri | face} <ID_range> | all }]

sideset <sideset_ID> face <ID_range> [wrt {hex <ID_range> | all}]

sideset <sideset_ID> tri <ID_range> [wrt {tet <ID_range> | all}]

sideset <sideset_ID> surface <ID_range> [wrt {{volume | surface} <ID_range> | all} ] [FORWARD | reverse | both]

sideset <sideset_ID> curve <ID_range> [wrt {surface <ID_range> | all}]

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

Для наборов сторон часто бывает важным задание направления. В случае поверхности направление может быть задано с помощью опций forward, reverse или both. Опция forward соответствует направлению нормали к поверхности или направлению наружу группы гексаэров, reverse - обратному направлению, both - обоим направлениям. По умолчанию действует опция forward. Пользователь может указать объем, из которого берутся гексаэдры, с помощью опции wrt volume.

Задание направления важно и для кривых в составе наборов сторон. Опция wrt surface позволяет указать, какие грани поверхности включаются в набор сторон. Опция wrt all обеспечивает включение всех граней, присоединенных к кривой; она используется по умолчанию.

Примеры

При создании наборов узлов и сторон могут оказаться полезными дополнительные команды выбора объектов. Ниже приведен пример, в котором создается набор узлов (с номером 1), включающий все внешние узлы геометрического объекта в виде куба:

# создание геометрии
Create brick x 10
Create cylinder height 10 radius 2
Move volume 2 z 10
# сращивание всех объемов
Merge volume all
# построение сетки на объемах
Mesh volume all
# создание набора узлов, включаещего только узлы, #находящиеся на внешних гранях объема
Nodeset 1 surface in volume all with not is_merged

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

# удаление из набора узлов 1 всех узлов, принадлежащих #поверхности 2
Nodeset 1 surface 2 remove
#удаление из набора узлов 1 всех узлов, принадлежащих   #кривым, которые принадлежат поверхности 2
Nodeset 1 node in curve in surface 2 remove

Узлы также могут быть добавлены или удалены посредством указания их координат. Ниже, в продолжение предыдущего примера, представлена команда удаления из набора узлов 1 всех узлов с координатой z, равной 15:

# удаление из набора узлов 1 всех узлов с #координатой z равной 15
Nodeset 1 node in surface all with z_coord = 15 remove

Присвоение наборам узлов и сторон имен и описаний

Наборам узлов и сторон могут быть присвоены наименования и описания. Такие описательные характеристики часто оказываются более понятными, чем традиционные целочисленные идентификаторы (IDs). При экспорте сетки как артефакта, соответствующего правилам DART, имена и описания включаются в метаданные, делая их доступными для DART-приложений таких, как SIMBA. Для присвоения наборам узлов и сторон имен и описаний используются команды:

{nodeset | sideset} <IDs> name "<new_name>"

{nodeset | sideset} <IDs> description "<description>"

Подобные команды применимы и к именам и описаниям блоков элементов.

Группирование в набор сторон граней поверхности

Набор сторон может быть создан из граней поверхности с помощью одной из следующих команд:

sideset <sideset_IS> surface <ID_range> patch maximum <x> <y> <z> minimum <x> <y> <z>

sideset <sideset_IS> surface <ID_range> patch center <x> <y> <z> radius <value> [filter] [partition]

sideset <sideset_IS> surface <ID_range> patch center <x> <y> <z> outer_radius <value> inner_radius <value> [filter] [partition]

sideset <sideset_IS> surface <ID_range> patch cylinder <axis_specification> radius <rad> [filter] [partition]

sideset <sideset_IS> surface <ID_range> patch cylinder <axis_specification> outer_radius <rad> inner_radius <rad> [filter] [partition]

Эти команды добавляют в наборы сторон только грани, отвечающие определенным критериям:

Эти команды могут добавлять в набор сторон и отдельные элементы. При последующем удалении сетки такие элементы будут удалены из набора. В случае перестроения сетки новые элементы автоматически в набор не включаются.

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

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

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

Группирование элементов, соответствующих пустотам и вложениям

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

sideset start <ID> enclosure {volume | hex | tet} <range>

С помощью аргумента start определяется начальный номер набора сторон (<ID>). Номера других наборов возрастают монотонно, если не возникает конфликтов.

Удаление наборов узлов и сторон

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

reset genesis

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

reset nodeset

reset sideset

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

delete nodeset <nodeset_ID_range>

delete sideset <sideset_ID_range>

Отображение наборов узлов и сторон

Для отображения наборов узлов и сторон в графическом окне применимы команды:

draw nodeset <nodeset_ID_range> [color <цвет>] [add]

draw sideset <sideset_ID_range> [color <цвет>] [add]

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

color nodeset <nodeset_ID_range> {цвет | default}

color sideset <sideset_ID_range> {цвет | default}

Данные об ассоциативности наборов узлов

Наборы узлов могут использоваться для сохранения данных об ассоциативности сеточных и геометрических объектов в файлах Exodus II. Эти данные применимы для обеспечения связи сетки с существующей геометрией в последующей сессии Fidesys. Возможно также их использование для установления связи ранее сгенерированной сетки с геометрией при импорте файлов в формате Exodus II или связи функции поля с геометрией при адаптивном построении сетки (см. подраздел Адаптивность сетки и функции, определяющие размер элементов).

Команды для управления данными об ассоциативности при записи или чтении файлов Exodus II и вывода соответствующей информации приведены ниже:

list import mesh nodeset associativity

list [export mesh] nodeset associativity

list [export mesh] nodeset associativity complete

set import mesh nodeset associativity [ON | off]

[set] [export mesh] nodeset associativity [on | OFF]

[set] [export mesh] nodeset associativity complete [on | OFF]

Данные об ассоциативности сохраняются в файле Exodus II следующим образом. Сначала для каждого геометрического объекта (вершины, кривой и т.д.) записывается набор узлов, принадлежащих этому объекту. Затем имя каждого геометрического объекта связывается с соответствующим набором узлов посредством указания для набора имени объекта и принадлежности к нему. Номера наборов узлов, используемых в качестве ассоциативных наборов узлов, формируются путем добавления фиксированного базового номера (зависящего от порядка геометрического объекта) к идентификатору геометрического объекта. Базовые номера геометрических объектов различного порядка приведены в таблице 1. Следуя таблице 1, можно установить, например, что узлы, принадлежащие кривой 26, будут сохранены как ассоциированный набор 40026.

Таблица 1 - Базовые номера (идентификаторы, ID) геометрических объектов различного порядка

Геометрический объект

Базовый номер

Вершина

50000

Кривая

40000

Поверхность

30000

Объем

20000

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

Распределение параметров граничных условий согласно заданному уравнению

Граничные условия, накладываемые на наборы узлов или сторон, могут быть заданы функциями распределения определенных физических параметров. Этим функциям соответствуют коэффициенты распределения применительно к каждому узлу набора. По умолчанию значения коэффициентов постоянны и равны 1. Функция распределения (уравнение) задается с помощью команды:

create equation "<expression>" name "<name>"

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

Пример задания уравнения (функции 10×sin(x)):

create equation "10*sin({x})" name "my_equation"

Заданное уравнение может быть назначено набору узлов или сторон:

{nodeset | sideset} <ID> distribution equation "<equation_name>"

Пример назначения заданного выше уравнения набору узлов 10:

nodeset 10 distribution equation "my_equation"

При записи набора узлов 10 в файл Exodus II значение математического выражения "my_equation" вычисляется для каждого узла в наборе с использованием данных этого узла: {x}, {y}, {z} и {n}. Результатом вычислений является коэффициент распределения, характерный для каждого узла.

Ниже приведен пример, включающий: создание прямой линии единичной длины, генерацию на ней сетки с 3 узлами, формирование набора узлов (с номером 1), задание линейного распределения параметра для входящих в этот набор узлов и экспорт сетки с соответствующими свойствами в виде файла Exodus II (temp.g):

# создание прямой линии от точки (0,0,0) до точки (1,0,0)

create vertex 0 0 0
create vertex 1 0 0
create curve vertex 1 2
# построение сетки на кривой
curve 1 interval 2
mesh curve 1
# создание блока и набора узлов, включающих прямую

block 1 curve 1
nodeset 1 curve 1
# задание линейного распределения параметра для входящих # в этот набор узлов
create equation "{x}" name "simple_eq"
nodeset 1 distribution equation "simple_eq"
# экспорт сетки

export mesh "temp.g" overwrite

Далее представлен еще один пример, в котором создается куб, в нем генерируется сетка из 20-узловых гексаэдров, формируется набор сторон (20), соответствующий поверхности 1, к этой поверхности будет прикладываться давление, изменяющееся вдоль оси x по линейному закону, и производится экспорт сетки с заданными свойствами:

# создание куба
brick x 10
mesh volume 1
# построение сетки из 20-узловых гексаэдров
block 1 volume 1
block 1 element type hex20
# создание набора сторон для дальнейшего #приложения ГУ давление
sideset 20 surface 1
# задание линейного распределения параметра для #входящих в этот набор сторон
create equation "({x}+5)/10" name "zero_to_one"
sideset 20 distribution equation "zero_to_one"
# экспорт сетки
export mesh "temp.g" overwrite

Копирование наборов узлов, наборов сторон и блоков

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

set copy_nodeset_on_geometry_copy [on | OFF | use_original]

set copy_sideset_on_geometry_copy [on | OFF | use_original]

set copy_block_on_geometry_copy [on | OFF | use_original]

Опция, используемая по умолчанию (OFF), означает, что содержащиеся в исходном геометрическом объекте наборы и блоки не копируются в новый объект. Опция on обеспечивает их копирование. В соответствии с опцией use_original новые геометрические объекты, созданные после копирования, будут иметь наборы или блоки, представленные в исходных объектах.