Поиск по документации
Введите не менее 2 символов
Введите не менее 2 символов
![]() |
CAE Fidesys 9.0 Руководство пользователя |
Граничные условия могут накладываться на формируемую конечно-элементную модель с помощью наборов узлов и наборов сторон, относящихся к объектам свойств (типа 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]
Эти команды добавляют в наборы сторон только грани, отвечающие определенным критериям:
При использовании аргументов maximum и minimum в набор включаются все грани поверхности, центры которых попадают в параллелепипед, ориентированный по осям координат, с заданными максимальными и минимальными значениями координат.
При использовании аргументов center и radius в набор включаются все грани, центры которых попадают внутрь сферы с заданными координатами центра и радиусом.
При использовании аргументов center, outer_radius и inner_radius в набор включаются все грани, центры которых попадают в объем между двумя сферами с заданными радиусами (внешним и внутренним) и общим центром.
При использовании аргументов cylinder и radius в набор включаются все грани, центры которых попадают внутрь цилиндра бесконечной длины с заданной осью и заданным радиусом.
Изменение предыдущего критерия в виде иcпользования вместе с cylinder и outer_radius дополнительного аргумента inner_radius исключает добавление в набор граней, центры которых лежат внутри цилиндра с заданным внутренним радиусом.
Эти команды могут добавлять в набор сторон и отдельные элементы. При последующем удалении сетки такие элементы будут удалены из набора. В случае перестроения сетки новые элементы автоматически в набор не включаются.
Опция 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. При этом действуют следующие правила:
Выражение целиком не заключается в скобки "{" и"}".
Выражение может включать любые из предопределенных переменных:
{x} - x-координата узла;
{y} - y-координата узла;
{z} - z-координата узла;
{n} - идентификатор узла в программе (который может
не совпадать с ID в файле Exodus II).
Пример задания уравнения (функции 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 новые геометрические объекты, созданные после копирования, будут иметь наборы или блоки, представленные в исходных объектах.