Научная статья на тему 'Представление вычислительных сеток в системах инженерного анализа'

Представление вычислительных сеток в системах инженерного анализа Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
58
8
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
дискретная модель / сетка / структура данных / формальное представление / быстродействие. / discrete model / mesh / data structure / representation / benchmark

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — С. В. Чопоров

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — С. В. Чопоров

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

REPRESENTATION OF COMPUTATIONAL MESHES IN COMPUTER-AIDED ENGINEERING

A discrete model of a geometric object (aka grid, mesh) is an essential part of computer-aided engineering based on the solution of partial differential equations. Intuitively, a discrete model of geometric object is a collection of nodes and elements. Coordinates of nodes define the geometry of the object. Elements define the connectivity between nodes and the topology of the object. Generally, elements have only common vertices, edges and faces. To support computational convergence, for each internal edge or face of some element must exist the corresponding edge or face of the another element. In this paper, we present the problem of representation of discrete models of geometric models in computer-aided engineering. In the paper, the approach for the discrete model representation based on sets of nodes, elements and lists of incidence has been developed. This approach does not depend on the element shape or the model dimension. For this representation, algorithms of node and element inserting and deleting have been described Two possible implementations of the developed representation have been compared. The first implementation uses list data structures, the second uses dynamic arrays. Lists allow effective deleting of nodes and elements by the modification of references only. Dynamic arrays store all data in contiguous block of memory and they are effective in searching and iterating procedures. Results of benchmarks for both implementations have been described in the paper. Classes for both implementations have been developed. These classes allow using a simple user-friendly interface for meshing algorithms programming. The further prospects of the research include the development of the representation adapted for parallel and distributed computer systems.

Текст научной работы на тему «Представление вычислительных сеток в системах инженерного анализа»

УДК 519.6: 004.942

СВ. ЧОПОРОВ

Запорожский национальный университет

ПРЕДСТАВЛЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ СЕТОК В СИСТЕМАХ ИНЖЕНЕРНОГО АНАЛИЗА

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

Ключевые слова: дискретная модель, сетка, структура данных, формальное представление, быстродействие.

С.В. ЧОПОРОВ

Запорiзький нацюнальний ушверситет

ПОДАННЯ ОБЧИСЛЮВАЛЬНИХ С1ТОК У СИСТЕМАХ 1НЖЕНЕРНОГО АНАЛ1ЗУ

Дискретт моделi геометричних об'eктiв (або стки) е важливими компонентами систем iнженерного анал1зу, заснованих на розв 'язаннi систем рiвнянь у частинних похiдних. 1нтутивно, дискретна модель геометричного об 'екта - це колекцiя вушв i елементiв. Координати вузлiв визначають геометрiю об 'екта. Елементи визначають зв 'язки мiж вузлами, тобто топологт геометричного об 'екта. У загальному випадку, елементи можуть мати тшьки стльш вершини, ребра та грат. Для забезпечення чисельно'1 збiжностi для кожного внутршнього ребра або гран одного елемента повиннi iснувати вiдповiдне ребро або грань iншого. Отже, у статтi розглянута проблема подання дискретних моделей геометричних об 'ектiв у системах iнженерного анал1зу.

У статтi запропоновано пiдхiд до подання дискретних моделей геометричних об 'ектiв множинами вузлiв i елементiв, а також списками iнцидентностi. Розроблений пiдхiд до подання сток не залежить вiд форми лементiв i розмiрностi моделi. Для запропонованого пiдходу представлено алгоритми додавання та видалення вушв або елементiв.

Розглянуто двi можливi реал1зацИ подання дискретних моделей геометричних об 'ектiв: на основi векторних i спискових структур даних. Векторн структури базуються на розмщенщ даних у по^довних адресах пам'ятi, що дозволяе ефективно Их обробляти у циклах. Натомить, списковi структури дозволяють ефективно видаляти дат. У статтi наведено результати обчислювальних експериментiв для до^дження швидкоди операцш ставки та видалення вузлiв та елементiв.

Розроблен класи для програмно'1 реалгзаци подання дискретних моделей. Ц класи дозволяють використовувати простий i дружтй до користувача ттерфейс для автоматизаци алгоритмiв генерацИ дискретних моделей.

Перспективи подальших дослiджень можуть полягати у розробц подання дискретних моделей геометричних об 'ектiв у паралельних i розподтених комп 'ютерних системах.

Ключовi слова: дискретна модель, стка, структура даних, формальне подання, швидкодiя.

S.V. CHOPOROV

Zaporizhzhya National University

REPRESENTATION OF COMPUTATIONAL MESHES IN COMPUTER-AIDED ENGINEERING

A discrete model of a geometric object (aka grid, mesh) is an essential part of computer-aided engineering based on the solution of partial differential equations. Intuitively, a discrete model of geometric object is a collection of nodes and elements. Coordinates of nodes define the geometry of the object. Elements define the connectivity between nodes and the topology of the object. Generally, elements have only common vertices, edges and faces. To support computational convergence, for each internal edge or face of some element must exist the corresponding edge or face of the another element. In this paper, we present the problem of representation of discrete models of geometric models in computer-aided engineering.

In the paper, the approach for the discrete model representation based on sets of nodes, elements and lists of incidence has been developed. This approach does not depend on the element shape or the model dimension. For this representation, algorithms of node and element inserting and deleting have been described.

Two possible implementations of the developed representation have been compared. The first implementation uses list data structures, the second uses dynamic arrays. Lists allow effective deleting of nodes and elements by the modification of references only. Dynamic arrays store all data in contiguous block of memory and they are effective in searching and iterating procedures. Results of benchmarks for both implementations have been described in the paper.

Classes for both implementations have been developed. These classes allow using a simple user-friendly interface for meshing algorithms programming.

The further prospects of the research include the development of the representation adapted for parallel and distributed computer systems.

Keywords: discrete model, mesh, data structure, representation, benchmark.

Постановка проблемы

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

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

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

Анализ последних достижений и публикаций

Изначально наибольшее распространение получили полигональные дискретные модели поверхностей геометрических объектов. Для них разработаны весьма эффективные программные и аппаратные методы визуализации (например, при помощи обратной трассировки лучей). Многоугольник в порядке обхода однозначно определяется координатами своих вершин. Соответственно, в задачах визуализации для каждого полигона достаточно хранить только координаты его вершин. В результате на каждый полигон будет выделяться 3 • k • f байт памяти ( k - число вершин, f - число байт, используемое

для хранения одного числа с плавающей точкой).

В задачах генерации и обработки дискретных моделей возникает необходимость вставки или удаления узлов. В случае хранения элементов в виде массивов координат необходим поиск элементов с общими узлами. В результате в системах инженерного анализа распространение получили структуры данных, основанные на представлении вершин элементов указателями на позиции в общем массиве или списке координат вершин. При этом, как правило, элементы обладают дополнительной топологической информацией, упрощающей нахождение соседей. Пионером в этом направлении можно считать схему "крылатое ребро" (winged edge) [1]. В нем каждый узел хранит информацию о своих координатах и ссылку на одно из своих ребер, грань хранит ссылки на ребра в порядке их обхода. Ребро хранит ссылки на два узла и две грани (условно левую и правую), а также четыре "крыла": ссылки на предыдущие и следующие ребра в порядке обхода обеих граней. Схожие идеи заложены в схемы "радиальное ребро" (radial-edge) [2], "ориентированное ребро" (directed edge) [3], "полуребро" (half-edge) [4], а также обобщениях последнего [5, 6, 7]. Подобные схемы весьма эффективны при хранении и обработке полигональных моделей, но их весьма проблематично применять для объемных элементов. Компактные схемы хранения объемных элементов разработаны для тетраэдров в виде обобщения схем для треугольников [8, 9]. В то же время, в работе [10] предложена схема сжатого хранения дискретных моделей на основе шестигранников.

Цель исследования

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

Изложение основного материала исследования

Формально, дискретная модель геометрического объекта - пара множеств вида

М = (V, Е), (1)

где V = (у1, у2, ) - множество координат узлов;

Е = (е1 = (к^ ^ . , к1Л), е2 = (¿2,1, к2,2, . , кп2 ) , .~,е9= (к,1, кЧ,2, ., к«9 )) - множество

ni -вершинных элементов (ni = ej ) - кортежей номеров узлов из множества V, определяющих положения вершин элемента; m - число узлов; q - число элементов.

Координатыj-го элемента с n вершинами определяются подстановкой V(ei) = (v, , v, ,..., v, ).

V 1 ' V j.1 j.2 j,n !

Множество V, в общем случае, можно считать ассоциативным массивом, в котором хранятся пары ключ-значение. Ключом выступает номер, код или адрес в памяти узла, значением - его координаты. Соответственно, запись V [к ] обозначает координаты (радиус-вектор) узла vk е V .

Аналогичное утверждение справедливо и для множества E, в котором ключами могут выступать номера, коды или адреса элементов, а значениями соответствующие списки или массивы, хранящие кортежи. В таком случае запись E[i] обозначает элемент ei е E. Учитывая, что ei является кортежем, то

et [ j] = E[i][ j] обозначает номер узла kij . определяющего положение j-й вершины.

Алгоритмы вставки и удаления узлов и элементов для дискретной модели вида (1) являются элементарными. Добавление нового элемента требует поочередного добавления всех его вершин. В свою очередь, вставка нового узла требует проверки наличия узла с такими же координатами. Результатом операции вставки будет код (номер) узла в множестве V (новый или существующий, если такой же узел был найден). При удалении узла также необходимо будет удалить инцидентные элементы, а при удалении элемента необходимо удалить только узлы, на которые больше не участвуют в связях.

Для дискретной модели, состоящей из m узлов и q n-вершинных элементов. операция вставки

узла может быть реализована при помощи линейного алгоритма с вычислительной сложностью O (m). Добавление элемента, заданного координатами своих вершин, n раз потребует выполнения вставки узла и, соответственно, будет обладать вычислительной сложностью O (nm). Для формирования множества

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

удалении одного элемента потребуется nq операций, а при удалении узла (kn +1) q операций (к - число

инцидентных в узле элементов).

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

M = (N. E). (2)

где N = ((v1.11). (v2,12)....(vm. Im)) - множество пар координат i-го узла vi и множеств инцидентных ему элементов If = {e е E: i е E} ; E - такое же, как в (1).

В квадратных скобках можно обозначить операции доступа к элементам множества V , а в круглых скобках - к элементам множества E . То есть, M [к] = N [к] = vk . M (i) = E [i]. M (ij) = E[i ][ j]. Для дискретной модели вида (2) к ним добавится операция получения множества инцидентных элементов: M.incident (к) = Iк . Также положим, что запись M.code (n) соответствует коду n в M .

Вставка узла в дискретную модель вида (2) аналогична описанной выше. В результате вставка узла может быть формализована следующим алгоритмом. algorithm insert_node input:

M - дискретная модель геометрического объекта

p - координаты узла output:

k - код узла begin

for each n e M.N do if ||p - n.v|| < £ then

return M.code ( n )

end if end for

M.N ^ M.Nu{( p,0)} return M.code ((p,0))

Алгоритм вставки нового элемента, заданного списком координат своих вершин, в дискретную модель может быть формализован в виде algorithm insert_element input:

M - дискретная модель геометрического объекта V - список координат вершин begin

(e, ke) ^ Новый элемент с |V| вершинами и его код в M.E for each v e V do

e [i ] ^ insert_node (M, v)

M.incident ( e [i ]) ^ M.incident (e [i ])u {ke} end for

M.E ^ M.E u {e}

end

Операция удаления элемента для дискретной модели геометрического объекта вида (2) требует обновления множеств инцидентных элементов в узлах, соответствующих вершинам удаляемого элемента. В результате эта операция может быть записана в виде следующего алгоритма. algorithm remove_element input:

M - дискретная модель геометрического объекта ke - код элемента

begin

e ^ M (ke)

for i = 1 to |e| do

M.incident (e [i ]) ^ M.incident (e [i ]) \ {ke} if M.incident (e [i ]) = 0 then

remove_node (M,e [i ])

end if end for

M.E ^ M.E \ {e}

end

Операция удаления узла, используемая выше, может быть реализована в виде следующего алгоритма.

algorithm remove_node input:

M - дискретная модель геометрического объекта kn - номер (код) узла

begin

I ^ M.incident(kn) for each ke e I do

remove_element (M,ke) end for

M.N ^ M.N\ {M.N[kn ]}

end

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

Хранение дискретной модели геометрического объекта вида (2) возможно несколькими способами. Ключевыми отличиями между ними находятся в типах данных, используемых для хранения вершин и элементов. Традиционно, когда речь и идет о множествах однотипных экземпляров, противопоставляются две структуры данных: векторная и списковая.

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

этом удаление и вставка в середину новых экземпляров в такую структуру данных связано с линейными затратами времени, вызванными сдвигами массивов данных.

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

Реализовать обе структуры можно в виде композиции трех классов: Mesh, Node и Element (рис. 1). Класс Mesh - абстракция сетки. Он является агрегацией экземпляров классов Node и Element и предоставляет интерфейс для манипулирования ими (добавления, удаления, создания итераторов). Класс Node является абстракцией узла и включает в себя (является композицией) координаты точки, тип узла (внутренний, граничный, характерный) и множество инцидентных элементов. Класс Element - абстракция элемента, которая хранит ссылки на узлы. При списковой реализации узлы и элементы хранятся в двусвязных списках, а в качестве ссылок (на узлы в элементах и на инцидентные элементы в узлах) используются соответствующие адреса памяти. При векторной - узлы и элементы хранятся в динамических массивах, а в качестве ссылок используются их индексы.

fvbsh

+ addNodefnode: Node]: NodeRef + addElement(element: Element) + delNode[node: Node} + delElement[element: Element) + nodelteratorO: Nodelterator + nodeBeglnQ: Nodelterator + nodeEndQ: Nodelterator + elementlteratorQ: Elementlterator + elementBeglnQ: Elementlterator + elementEndQ: Elementlterator

o

о

Nods

+ polntO: Point + typeQ: NodeType + IncldentQ: IncidentSet

i

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Element

+ vertlcesCountQ: Integer +■ vertex [Index: Integer): NodeRef

Рис. 1. Диаграмма классов

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

В качестве тестового используется компьютер с процессором Intel Core i5, 8 гигабайтами оперативной памяти, который находится под управлением операционной системы на базе Linux. Каждый тест запускается трижды, в результате фиксируется наименьшее время, потраченное на выполнение задачи.

На рис. 2 показана зависимость времени построения дискретной модели от числа элементов. Значения по оси абсцисс основное значение показывает число элементов в модели, а значения в скобках -узлов.

(1331) (4096) (9261) (17576) (29791) (46656) (68921) (97336) (132651) количество вставленных элементов (узлов) «•—Списковая структура Векторная структура

Рис. 2. Зависимость времени построения модели то числа элементов и узлов

Дискретная модель, основанная на динамических массивах (векторная структура), требует меньшего времени на формирование дискретной модели относительно аналогичной списковой. В обоих случаях графики имеют вид степенной функции. Вид графика обусловливается тем, что вычислительная сложность

вставки ' вершин с проверкой существования оценивается величиной ^ 7 ( .

На рис. 3 показана зависимость времени удаления тысячи узлов от общего их числа в дискретной модели геометрического объекта. Необходимость линейных сдвигов обусловливает существенно более медленное удаление (порядка 8 раз) при использовании векторных структур для хранения узлов и элементов в сравнении с списковыми. В обоих случаях зависимость времени от числа узлов в модели близка к линейной.

- КОгЮТССЩр ■А1*''

—Стшскоппя структура ■ 'Векторная структура Рис. 3. Зависимость времени удаления 1000 узлов от числа узлов в модели

Для исследования влияния числа удаляемых узлов на время работы рассмотрим дискретную модель (рис. 4), состоящую из 27000 узлов и 24389 элементов. Как и в предыдущем случае, удаление узлов при использовании списковых структур для хранения узлов и элементов существенно быстрее векторных.

14,16

12,16 10.16

1

1-8,16 V

¡6,16 4,16 2,16 0.16

■100 1-100 2-100 3-100 -1-100 5-100 6-100 7-100 количество удаленных узлов Ф Спнскопля структура В Некторппя структура

Рис. 4. Зависимость времени от числа удаленных узлов

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

Выводы

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

Серия вычислительных экспериментов для сравнения двух реализаций: на основе списковых и векторных структур данных показала, что первые более эффективны при удалении узлов, а вторые - при безопасном добавлении.

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

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

Список использованной литературы

1. Baumgart B. G. A polyhedron representation for computer vision / B. G. Baumgart // National Computer Conference and Exposition AFIPS'75 : New York, USA, 1975 : proceedings. - ACM, 1975. - P. 589-596.

2. Muuss M. J. Combinatorial solid geometry, boundary representations, and non-manifold geometry / M. J. Muuss, L. A. Butler // State of the Art in Computer Graphics: Visualization and Modeling. - 1991. -Volume 1. P. 185-223.

3. Campagna S. Directed Edges: A Scalable Representation for Triangle Meshes / S. Campagna, L. Kobbelt, H.-P. Seidel // Journal of Graphics Tools. - 1998. - Voluma 3, Issue 4. - P. 1-11.

4. Kettner L. Using generic programming for designing a data structure for polyhedral surfaces / L. Kettner // Computational Geometry: Theory and Applications. - 1999. - Volume 13, Issue 1. - P. 65-90.

5. Alumbaugh T. J. Compact array-based mesh data structure / T. J. Alumbaugh, X. Jiao // The 14th International Meshing Roundtable : International Conference, San Diego, California, USA, September 11-14, 2005 : proceedings. - Sandia National Laboratories: Springer-Verlag, 2005. - P. 585-504.

6. Levy B. Circular incident edge list: a data structure for rendering complex unstructured grids / B. Levy, G. Caumon, S. Conreaux, X. Cavin // Conference on Visualization : 2001, Washington, DC, USA :IEEE Computer Society, 2001. - P. 191-198.

7. Sieger D. Design, implementation, and evaluation of the surface_mesh data structure / D. Sieger, M. Botsch // The 20th International Meshing Roundtable : International Conference, 2011 : proceedings. - Sandia: Sandia National Laboratories, 2011. - P. 533-550.

i Надоели баннеры? Вы всегда можете отключить рекламу.