Поиск по документации
Введите не менее 2 символов
Введите не менее 2 символов
![]() |
CAE Fidesys 9.0 Руководство пользователя |
Свободные сетки - это сетки, которые не связаны с какими-либо геометрическими объектами. Свободные сетки содержит только сеточные объекты (гексаэдры, треугольники, ребра, узлы и т.д.), но не имеют ассоциированных объемов, поверхностей и т.п. Поскольку исходная геометрия отсутствует, объем операций со свободными сетками ограничен. С ними могут выполняться следующие действия (в определенных пределах):
Для создания свободной сетки можно использовать три способа:
Импорт с помощью команды import mesh [no_geom], как это описано в пункте Импорт свободной сетки без геометрии.
Диссоциация сетки и геометрического объекта, на котором она построена.
Для диссоциации сетки и геометрического объекта (отделения сетки от объекта) применима команда:
disassociate mesh [from] {volume | surface | curve | vertex} <ID_range>
Например, следующий набор команд создает параллелепипед, генерирует на нем сетку, затем отделяет сетку от параллелепипеда и удаляет его:
brick x 10
mesh volume all
disassociate mesh from volume 1
delete volume 1
При диссоциации создается группа под названием 'disassociate elements', содержащая свободную сетку.
Для свободной сетки существует возможность создать подходящую ей геометрическую модель. Используемые при этом операции подобны тем, что выполняются при импорте файлов в формате Exodus, но без дополнительных шагов. Например, пользователь имеет возможность считывать данные свободной сетки, исправлять обнаруженные в ней проблемы, а затем создавать геометрию на основе сетки, без необходимости записывать вначале информацию о сетке в виде файла. Синтаксис команды следующий:
create mesh geometry {hex | tet | face | tri | block} <range> [feature_angle <angle=135>] [keep]
Эта команда применима и к любому набору определенных сеточных объектов. Например, можно создать геометрию, соответствующую группе гексаэдров или блоков элементов.
При использовании параметра keep пользователь получает две сетки: первую оригинальную, а вторую - с геометрией на основе сетки, которая "обладает" сеткой. Без этого параметра в качестве результата выступает существующая сетка и у нее появляется "обладающая" ей геометрия на основе сетки. Команда проверяет принадлежность сетки к определенной геометрии и в случае обнаружения такой принадлежности выдает предупреждение и активизирует параметр keep. По умолчанию он не используется.
Использование этого параметра позволяет обрабатывать и любые свойства, определенные на свободной сетке. Однако они не переносятся на создаваемый геометрический объект и не рассматриваются в качестве критериев построения геометрии.
Для слияния двух свободных сеток применяется команда эквивалентности:
equivalence node <range> [tolerance <value>]
Все узлы в заданном диапазоне, которые лежат в пределах указанного допуска (<value>), подвергаются слиянию. Например, команда, завершающая приведенную ниже последовательность, выполняет слияние всех узлов, лежащих на расстоянии не более 0,05 друг от друга:
br x 10
volume 1 copy move x 10
mesh volume all
disassociate mesh from volume 1 2
delete volume 1 2
equivalence node all tolerance 0.05
Преобразования свободных сеток осуществляются с помощью команд, описанных в подразделе Основные операции с группами. Все объекты свободной сетки автоматически приписываются к определенной группе. Такие группы могут затем изменяться в результате соответствующих операций. Приведенные ниже команды иллюстрируют преобразования, выполняемые для свободных сеток:
brick x 10
mesh volume 1
disassociate mesh from volume 1
delete volume 1
group disassociated_elements move x 10
group disassociated_elements rotate 15 about x
group disassociated_elements scale 0.25
group disassociated_elements reflect 1 1 0
group 'node_group' add node 1 to 121
group node_group move z 5
Следует отметить, что перемещения узлов сетки не оказывают влияния на ассоциированную геометрию.
Если группа состоит из объектов сетки, команды преобразования воздействуют только на узлы в группе. Все узлы в ней будут подвергаться перемещениям, масштабированию, повороту или отражению согласно заданию. Если в группе нет узлов, то выдается сообщение об ошибке. Включение в группу всех узлов приводит к преобразованию всей модели. Включение только подмножества узлов приводит к преобразованию лишь этих узлов и элементов, которым они принадлежат, но не к преобразованию всей сетки.
Разъединенные элементы сетки не могут быть скопированы с помощью команд группового копирования. Для создания копии они должны быть экспортированы и импортированы повторно. В качестве альтернативы они могут быть ассоциированы с геометрией на основе сетки, а затем скопированы посредством команд копирования сетки.
Новые элементы сетки могут быть созданы из существующих узлов, ребер, граней или треугольников по методу протяжки:
create element extrude {node | edge | face | tri} <element_list> {direction <опции задания направления> | along curve <curve_list>} [distance <value>] [layers <num_layers>] [twist <angle> axis <опции задания оси>]
В качестве направления протяжки может использоваться кривая. Параметр distance определяет дистанцию протяжки; если он не задан, то элементы создаются вдоль всей кривой. Параметр layers указывает число элементов, создаваемых на заданном расстоянии. С помощью параметра twist определяются угол и ось закручивания при протяжки.
Пример: Создание грани и ее протяжка в заданном направлении:
create node location 0 0 0
create node location 1 0 0
create node location 1 1 0
create node location 0 1 0
create face node 1 to 4
create element extrude face 1 direction 0 0 1 distance 3 layers 3
create element extrude face 1 direction 0 0 1 distance 3 layers 3 twist
90 axis direction 0 0 1 origin 0 0 0
Пример: Создание грани и кривой в виде сплайна, а затем протяжка грани вдоль сплайна (см. Рис. 1)
create node location 0 0 0
create node location 1 0 0
create node location 1 1 0
create node location 0 1 0
create face node 1 to 4
create vertex location position 0 0 0
create vertex location position 0 .2 1
create vertex location position 0 1 2
create vertex location position 0 3 2
create vertex location position 0 4 1
create vertex location position 0 5 0
create curve spline vertex 1 2 3 4 5
create element extrude face 1 layers 5 along curve 1

Рис. 1 - Создание элементов методом протяжки грани вдоль сплайна
Грани и треугольные элементы могут использоваться для создания новых элементов в виде гексаэдров и призм с помощью команды смещения:
create element offset {face | tri} <element_list> [normal_to | opposite_normal] {distance <value>] [layers <num_layers>]
Направление смещения по умолчанию перпендикулярно выбранной грани (по нормали). Параметр opposite_normal позволяет изменить это направление на противоположное. Параметр layers определяет число элементов, создаваемых в заданном направлении.
Пример: Создание элементов в виде гексаэдра и призм из грани и треугольников с помощью смещения
create node location 0 0 0
create node location 1 0 0
create node location 1 1 0
create node location 0 1 0
create node location 2 0 1
create node location 2 1 1
create node location 1 2 0
create face node 1 to 4 create face node 3 2 5 6
create tri node 7 4 3
create tri node 7 3 6
create element offset face all tri all distance 3 layers 3 opposite_normal
Новые элементы могут быть созданы путем вращения существующего сеточного объекта (ребра, грани или треугольника) вокруг заданной оси:
create element revolve {edge | face | tri} <element_list> axis <опции задания оси> angle <angle> [layers <num_layers>] [attemp_hex_fix]
Параметр angle определяет угол поворота вокруг оси. Параметр layers задает, как и ранее, число создаваемых элементов. С помощью attemp_hex_fix обеспечивается попытка исправления вырожденных гексаэдров путем сжатия их в треугольную призму
Пример: Вращение двух граней вокруг оси Y со сжатием внутренних гексаэдров в призму (см. Рис. 2)
create node location 0 0 0
create node location 1 0 0
create node location 1 1 0
create node location 0 1 0
create node location 2 0 0
create node location 2 1 0
create face node 1 2 3 4
create face node 2 3 5 6
create element revolve face 1 2 axis direction 0 1 0 origin 0 0 0 angle
180 layers 4 attempt_hex_fix

Рис. 2 - Вращение двух граней свободной сетки вокруг оси со сжатием создаваемых внутренних гексаэдров в призму
Внутренние узлы свободной сетки могут быть сглажены с помощью таких команд, как smooth hex all или smooth tet all in block 100. Эти команды позволяют сглаживать только внутренние узлы элементов, указанных в команде. Узлы на границе остаются нетронутыми. Для сглаживания узлов на границе используется параметр target с указанием поверхности или кривой, соответствующих границе, как это описано в подразделе Сглаживание сетки. Приведенная ниже последовательность команд иллюстрирует возможность сглаживания свободной сетки с использованием целевой поверхности (см. Рис. 3).
sphere rad 25
webcut vol 1 plane xplane offset 18
delete vol 2
webcut volume 1 plane yplane offset 8
webcut volume 1 plane yplane offset -8
delete vol 1 3
surf 16 copy
delete vol 4
surf 18 scheme pave
surf 18 size 2
mesh surf 18
disassociate mesh surf 18 ## Перекрытие сетки и геометрии
refine face 1 radius 3
set developer on ## Сглаживание свободной сетки - команда разработчика
smooth face all scheme laplacian
## Сглаженная сетка не на поверхности
smooth face all scheme laplacian target surface 18
## Сглаженная сетка присваивается поверхности

Рис. 3 - Сглаживание свободной сетки без обращения к целевой поверхности (вверху) и с использованием целевой поверхности (внизу)
Оценка качества проводится для свободной сетки так же, как и для любой сетки, построенной на геометрии (см. подраздел Команда для оценки качества сетки). Разница состоит в определении в команде элементов сетки. Вместо объемов и поверхностей определяются группы гексаэдров, тетраэдров, граней или треугольников, например:
quality hex all
quality face all scaled jacobian
quality tet 1 to 100 draw mesh
Улучшение свободной сетки ограничивается улучшением сеточных особенностей в виде корректировки элементов сетки. При этом выбираются группы элементов, которые обрабатываются с помощью стандартных опций улучшения. Для элементов на границах, у которых из-за отсутствия геометрии нельзя точно определить положение узлов, для позиционирования последних используются методы осреднения.
Свободная сетка из тетраэдральных элементов может быть подвергнута своего рода "оптимизации" с помощью команды, описанной в подразделе Улучшение сетки из тетраэдров, например:
cleanup tet all
#оптимизирует все тетраэдры
cleanup tet 1 to 1000
#оптимизирует все тетраэдры в диапазоне [1, 1000]
В рамках этой команды лучше определять непрерывные наборы элементов.
Граничные условия на свободных сетках могут быть заданы путем явного указания соответствующих элементов сетки, создания набора сторон или блока из отделенной поверхности группы элементов, а также создания групп на основе определения взаимного расположения элементов - групп предзаданных сеток. Как только группа создана, она может быть назначена набору узлов или набору сторон. Представленная ниже последовательность команд иллюстрирует использование групп предзаданных сеток для формирования наборов сторон с целью задания граничных условий. При создании групп демонстрируется влияние опции divergence (см. Рис. 4).
##создание на свободной сетке групп предзаданных сеток, наборов
сторон и блоков
cylinder radius 3 z 12
volume 1 size 0.5
mesh volume 1
disassociate mesh from volume 1
delete volume 1
group 'mygroup1' add seed face 752 feature_angle 45
##Группирование всех граней цилиндрической поверхности
group 'mygroup2' add seed face 752 feature_angle 45 divergence
##Группирование граней в пределах 45 градусов от положения предзаданного
элемента
sideset 1 group mygroup1
sideset 2 group mygroup2
block 1 hex all
draw sideset 1
draw sideset 2
draw block 1

Рис. 4 - Создание групп предзаданных сеток: командой group 'mygroup1' add seed face 752 feature_angle 45 (слева) и командой group 'mygroup2' add seed face 752 feature_angle 45 divergence (справа)
Хотя граничные условия могут быть определены непосредственно только на геометрических объектах, они могут быть переданы свободной сетке благодаря команде диссоциации. Такая возможность иллюстрируется следующим набором команд:
##Определение наборов сторон, наборов узлов и блоков и передача их свободной
сетке благодаря диссоциации
brick x 10
mesh vol 1
sideset 1 surface 1
nodeset 1 curve 1
block 1 volume 1
disassociate mesh from volume 1
draw sideset 1
draw nodeset 1
draw block 1
Команда отделения поверхности сетки воспринимает список элементов объемной сетки и формирует подмножество из треугольников и граней на границе. Это подмножество может быть объявлено в качестве группы, набора сторон или блока. Возможно отделение поверхности от свободных сеток, заданных списками гексаэдров, тетраэдров или блоков.
Обычно сетки удаляются при определении геометрии, которой они принадлежат. Свободные сетки не могут быть удалены таким способом. Для удаления свободных сеток используется команда:
delete mesh
Эта команда удаляет из модели все сеточные объекты. Для выборочного удаления можно использовать индивидуальное удаление элементов сетки, например, с помощью команды:
delete {node | hex | tet | face | tri} <ID_range> [no_propagate]
При удалении элементов по умолчанию удаляются и их дочерние объекты, остающиеся без связей. Например, при удалении гексаэдра также будут удалены его грани, ребра и вершины, если они не используются прилегающими гексаэдрами. Опция no_propagate позволяет оставить любой дочерний сеточный объект, независимо от наличия или отсутствия у него связей.
Способ создания элементов сетки "снизу-вверх" применим и для свободных сеток. Разница между созданием элементов свободной сетки и сетки, ассоциированной с геометрией, заключается в том, что команды для свободной сетки не содержат опции связи сетки с телом, которому она принадлежит. В остальном эти команды идентичны командам создания элементов сетки, например:
create node <x> <y> <z>
create {hex | tet | tri | face | edge} node <ID_range>
Свободные сетки могут экспортироваться в виде файлов в формате Exodus II. Производится экспорт всех элементов, принадлежащих какому-либо блоку. Элементы, не принадлежащие блоку, не экспортируются.