информатика
■Ш
Арсентьева Евгения Петровна, УДК 519.6
Демьянович Юрий Казимирович
АЛГОРИТМЫ НЕВЫРОЖДЕННОГО
СИМПЛИЦИАЛЬНОГО ПОДРАЗДЕЛЕНИЯ С ИЗМЕЛЬЧЕНИЕМ ВБЛИЗИ ГРАНИЦЫ1
Аннотация
Предложены новые варианты измельчения симилициального топологически правильного подразделения вблизи границы области с сохранением свойства невырожденности.
Ключевые слова: алгоритм, симплициальный комплекс, подразделение, невырожденность, измельчение, бинарное дерево.
Симплициальные подразделения (разбиение на симплексы) широко используются в методе конечных элементов (МКЭ), который применяется для численного решения краевых задач, встречающихся на практике (см. [1,2]). При решении этих задач требуется подразделить заданную область на симплексы так, чтобы углы между их ребрами были ограничены снизу некоторым положительным числом, не зависящим от мелкости подразделения. Известны различные методы, использующие симплициальные подразделения Делоне (см. [3, 4, 5]). В работах [6, 7] построены структурированные (гексаэдраль-ные) сетки в трёхмерных областях с помощью методов отображений, учитывающих форму ячеек.
Цель данной работы - предложить новые варианты измельчения симплициаль-ного подразделения вблизи границы области с сохранением свойства невырожденности. Здесь даётся описание алгоритмов симплициального топологически правильного подразделения параллелепипеда
© Е.П. Арсентьева, Ю.К. Демьянович, 2010
при измельчении симплексов с приближением к одному из его оснований, при этом углы симплексов содержатся в интервале (е, р - е), где число е е (0, р/4) фиксировано. Симплициальное подразделение называется топологически правильным, если его вершины не лежат внутри ребер или внутри граней подразделения2. Особенность предлагаемых алгоритмов в том, что результирующее симплициальное подразделение рассматриваемого некомпактного параллелепипеда содержит бесконечное (счетное) множество симплексов; таким образом, получаемый симплициальный комплекс бесконечен. При практической реализации алгоритмов критерием остановки процесса измельчения является та или иная оценка требуемой точности (при аппроксимации границы области, при аппроксимации функции, при решении задачи методом конечных элементов и т.д.); критерий остановки процесса в данной работе
1 Работа частично поддержана грантами РФФИ 10-01-00245 и 10-01-00297.
2 В дальнейшем общепринятая терминология используется весьма вольно, ибо это не ведет к недоразумениям и сокращает изложение.
не рассматривается. Заметим, что построение невырожденного топологически правильного (измельчающегося к границе) симплициального подразделения пограничной полосы в случае произвольной трехмерной области с гладкой границей производится гладким отображением описываемого здесь симплициального подразделения рассматриваемого параллелепипеда. Поскольку получаемое в результате криволинейное симплици-альное подразделение неудобно для практического использования (для метода конечных элементов, для аппроксимации, для интерполяции и т. д.), то упомянутое криволинейное подразделение определенной модификацией заменяется на топологически эквивалентное прямолинейное подразделение; указанные построения в случае пограничной полосы для произвольной трехмерной области с гладкой границей будут даны в другом месте.
1. ОПИСАНИЕ ПРЕДВАРИТЕЛЬНЫХ ПОСТРОЕНИИ
Рассмотрим параллелепипед
П = {(х,у, г) | - £ < х < £, 0 < у < у*, 0 < г < г*} (1.1)
и дадим описание алгоритма его симплициального подразделения с измельчением симплексов вдоль г; здесь S, у*, г* - некоторые положительные числа.
В данной работе параллелепипед будем называть полосой (это относится к параллелепипеду П и к другим параллелепипедам, встречающимся в дальнейшем). Введем плоские слои (прямоугольники)
лг- = {(х,у,г) -£<х<£, 0<у<у*, г = г*/2г},
разбивающие полосу П на части (г = 0,1,...):
П. = {(х, у, г) |-£ < х < £, 0 < у < у*, г*/2г+1 < г < г* ¡2*} У полосы П * будем различать верхнее основание - слой Л * и нижнее основание -слой Л 1.
Опишем предварительные построения полосы П0 (для остальных полос построение аналогично).
Разобьём слой Л 0 на треугольники в соответствии с условием (А) Вершины треугольников лежат только на прямых
1 2 А0 = {(х,у, г) - £ < х < £, у = у*, г = г*} и Я0 = {(х, у, г) - £ < х < £, у = 0, г = г*}
(в этом случае у каждого треугольника две вершины лежат на одной из упомянутых прямых, а одна вершина - на другой, см. рис. 1).
Треугольники, у которых две вершины лежат на прямой 1, назовем нечетными
треугольниками триангулированного слоя Л0 , а остальные треугольники (то есть треугольники с одной вершиной на 10) - четныши треугольниками этого слоя. Отрезки, соединяющие вершины, лежащие на различных прямых, назовем внутренними, а остальные - внешними отрезками слоя Л 0 .
Ввиду предположения (А), справедливы следующие свойства:
1) к четным треугольникам по внутренним отрезкам примыкают нечетные треугольники, а к нечетным по внутренним отрезкам примыкают четные треугольники,
Рис. 1. Фрагмент симплициального разбиения
2) в рассматриваемом слое из двух треугольников, имеющих общую сторону, один является четным, а другой - нечетным,
3) четные и нечетные треугольники чередуются.
Спроецируем вершины полученных треугольников на следующий слой Л^ параллельно г. Соединим вершины и их проекции; в результате получим разбиение полосы П 0 на прямые треугольные призмы, основания которых параллельны плоскости (х, у), а образующие параллельны оси г. С полосой П о свяжем комплекс П о, состоящий из прямых треугольных призм, описаных выше.
Треугольные призмы, основаниями которых являются нечетные треугольники, назовём нечетными треугольными призмами комплекса П о, а призмы с четными треугольниками в основании - четными треугольными призмами этого комплекса. Нетрудно установить следующие свойства:
1) к четным треугольным призмам по внутренним граням примыкают нечетные треугольные призмы, а к нечетным по внутренним граням примыкают четные треугольные призмы,
2) в рассматриваемом слое из двух треугольных призм, имеющих общую грань, одна является четной, а другая - нечетной,
3) четные и нечетные треугольные призмы чередуются.
Дальше описывается алгоритм симплициального подразделения упомянутого выше комплекса, в котором каждая из рассмотренных выше призм разбивается на симплексы таким образом, чтобы полученное симплициальное подразделение было топологически правильным.
2. НЕКОТОРЫЕ ОБОЗНАЧЕНИЯ И ВСПОМОГАТЕЛЬНЫЕ СВЕДЕНИЯ
Введем некоторые обозначения. Пусть а и Ь - различные точки пространства М3; через (а, Ь) будем обозначать прямолинейный отрезок (исключая его концы), соединяющий точки а и Ь. Рассмотрим в М3 еще точку с, не лежащую на одной прямой с точками а и Ь; через (а, Ь, с) обозначим (открытый в топологии двумерной евклидовой плоскости) прямолинейный треугольник с вершинами а, Ь и с (таким образом, (а, Ь, с) -упомянутый выше треугольник с исключением границы). Наконец, если точка ё е М3 не лежит в одной плоскости с точками а, Ь и с, то через (а, Ь, с, ё) обозначается открытый в М3 симплекс с вершинами а, Ь, с и ё. Полученные объекты а, (а, Ь) и (а, Ь, с) иногда называют нульмерным, одномерным и двумерным симплексами соответственно. В дальнейшем ориентация симплексов не используется, так что вершины в скобках можно менять местами.
2.1. ПОДРАЗДЕЛЕНИЕ ТРЕУГОЛЬНИКА
Обозначим вершины треугольника й', й'' , й'"; тогда, согласно введенным обозначениям, треугольник с этими вершинами можно записать в виде (й', й'', й'"). Считая, что на каждой стороне этого треугольника выбрана одна точка, а именно ё'' '' е (й', й"), ё''''' е (й" , й'"), ё''"' е (й' , й'"), и соединяя упомянутые точки отрезками, получим разбиение исходного треугольника на четыре треугольника (ё' , ё' '', ё' '''), (ё'>", ё'', ё""'), (ё'ё""', ё'''), (ё' '", ё"'", ё''''); это преобразование представим в виде отображения строки (й', й", й'") в таблицу размером 4 X 3 (каждая строка последней представляет соответствующий треугольник разбиения):
(ё' , ё''', ё',''') (ё','', ё'', ё"'"') (ё'''', ё"'"', ё''') . (2.1) (ё ' , ё ' , ё ' )
(й , й , й ) ^
В этой таблице можно менять строки местами, а также переставлять элементы внутри каждой строки.
2.2. ПОДРАЗДЕЛЕНИЕ НЕЧЕТНОЙ ТРЕУГОЛЬНОЙ ПРИЗМЫ
Пусть (ии",и'") и (й' , й", й'") - основания «нечетной» треугольной призмы с ребрами (и' , й'), (и", й"), (и'", й'"); ее обозначим
- / // /// ■ и и и
7/ ;// ;///
(2.2)
а а а
Квадратные скобки в этой таблице означают, что здесь можно менять столбцы и строки, но произвольно менять элементы в строках нельзя (ибо столбцы однозначно определяют «боковые» ребра призмы). Подразделение этой призмы на симплексы полу-
7/ // 7/ " ///
чается соединением вершины а с вершиной и , вершины а с вершиной и и вершины й'" с вершиной и"; в результате образуются симплексы (и',и ' ,и " ,й'), (й' ,й'' ,й'" ,и"), (й' , й'", и ' , и''). Таким образом, подразделение представимо в виде отображения
/ / // /// 7/ч
(и , и , и , а )
/ Г' 7// 7/// //ч
^ (а , а , а , и )
/ 7 / 7/// // ///ч
(а , а , и , и )
/
///
и и и а а а
Грань (й ,й ,й ) симплекса (й ,й ,й ,и ) подразделим согласно формуле (2.1); добавляя ребра (й'", и"), (й'"', и"), (й""', и"), получим подразделение рассматриваемого симплекса на четыре симплекса с общей вершиной и", то есть
(а , а , а , и ) ^
Для топологически правильного подразделения добавим ещё ребро (й' ''', и'"). Таким образом, призма (2.2) получит следующее симплициальное подразделение (см. рис. 1)
( й', й , , 7/ /// й ' , и )
(й','', й , 7// /// й ' , и )
(й , , й , , й''' , и )
/ л » (й , , й , , 7/ /// й ' , и )
и а
а
( и', и'' , _ /// и , й')
( й', й','' , 1 / /// й ' , и )
(й','', й'' , т// /// й ' , и )
(й , , й , , й" и )
(й','', й , , й',''' , и )
( й', й',''' , и , и )
(й , й',''' , и , и )
(2.3)
2.3. ПОДРАЗДЕЛЕНИЕ ЧЕТНОЙ ТРЕУГОЛЬНОЙ ПРИЗМЫ
Рассмотрим призму
IV
]!У
(2.4)
7IV
и и
а а"' й1
Очевидно, что эта призма имеет общую (четырехугольную) грань с призмой (2.2). Соединяя вершину й' с вершиной и"', вершину с вершиной и и вершину
Л1.
а с вершиной и , получим подразделение этой призмы на симплексы; в результате имеем отображение
и и й' й''
IV
а
IV
IV
и , а )
(и ,и (а , а , а , и ) (а , а , и , и )
и
(й', й1У , й''') ^
Грань (й', й'йж) симплекса (й' , й'" , йж, и") подразделим аналогично подразделению (2.1); в результате получаем
( й', й''1У, й'' ) (й''1У, й1У, й1у''') (й''' '', йУ'', й''' ) (й',1У, й1у''', й',''')
где й' "' имеет прежний смысл, а точки й '1У, й1У'"' лежат на ребрах (й' , йж), (й'" ,йж) соответственно. Добавляя ребра (й' '1У, м'"), (й'' "', м'"), (й1у''', м'"), получим подразделение данного симплекса на четыре симплекса с общей вершиной и". Для топологически правильного подразделения добавим ещё ребро (й ',ГУ, м'). Таким образом, призма (2.4) получит симплициальное подразделение (см. рис. 1)
и и й' й'"
.IV
й
IV
( м', м1У, м' ( й', й''1У, й',''' ,
(й''1У, й1У, й1У,''', м
^ (й',''', й'у''', й''', м'") . (2.5)
(й ,1У, й1У, , й , , м
( й', й''1У, м', м
( й1У, й'•1У, м', м Нетрудно видеть, что подразделения (2.3) и (2.5) призм (2.2) и (2.4) согласованы,
й1У м
ибо их общая грань деление:
й' й'"
в том и в другом случае получает одно и то же подраз-
/ ///
и и
( м', ( й, (й ,
й й
й , / ///
м ) м ) м )
и
и
3. СИМПЛИЦИАЛЬНОЕ ПОДРАЗДЕЛЕНИЕ ПОЛОСЫ
Для описания геометрии (прямолинейной) триангуляции некоторой плоской многоугольной области в плоскости с координатами (х, у) достаточно иметь координаты вершин, а также указать перечень вершин, инцидентных каждому треугольнику триангуляции. Предположим, что вершины триангуляции перенумерованы натуральными числами 1, 2, ..., ИУ; пусть перенумерованы также треугольники натуральными числами 1, 2, ..., ИТ.
Зададим триангуляцию в плоскости (х, у) двумя прямоугольными таблицами:
/ х1 \ У1 К, // V ' V )
(М ^ = X 2 У 2 def Т = 1V // У2 ' ///, У2 )
хм К V Ум V Т // V N Т /// N ) Т
здесь х1 и у1 - координаты г-ой вершины, а ^ ], ^ ] и ^ ] - номера вершин /-го
треугольника (г = 1,2, ..., ИУ, / = 1, 2, ..., ИТ).
Аналогичным образом для описания геометрии (прямолинейного) симплициального комплекса в трехмерном евклидовом пространстве (х, у, 2) будем использовать таблицы
УС =
У У 2
п
Ул
^ =
К
(Уг>
< )
<)
/Г // т
(V - , V ' , V '
^ и ^ N / И
vw )
.IV
где х1, у и г - координаты г-ой вершины, а v j , v j , v j и V': - номера вершин J-го симплекса (г =1,2,..., NV, J = 1, 2, ..., ).
Опишем шаг алгоритма, состоящий в построении симплициального подразделения очередной полосы; при этом от крупной триангуляции верхнего слоя происходит переход к мелкой триангуляции нижнего слоя этой полосы.
Пусть дана триангуляция я-го слоя г = г* /2®:
я def
Vc =
XI
я
Х2
У1
я
У 2
XNv Уц
я def
IV =
/ / // /// ч
(и 1, и 1, и 1 )
я я я
/ / // /// ч
(и 2 , и 2, и 2 )
/ / я //я /// .я \
(и иТ, и , и )
(3.1)
3.1. ПОСТРОЕНИЕ КОМПЛЕКСА ИЗ ПРИЗМ
Спроектируем триангуляцию (3.1) на плоскость г = г*/2®+1 параллельно оси г; пусть
я я я я
J е {1, 2, ..., Ит }, а треугольник (й', , й"') является результатом проектирования
я я я
/ / // /// ч
треугольника (и ., и^ , и^ ).
Рассмотрим комплекс П , состоящий из треугольных призм
я
я
а
а
, J = 1, 2,
я
.., N1.
3.2. СИМПЛИЦИАЛЬНЫЕ ПОДРАЗДЕЛЕНИЯ ПРИЗМ
Если рассматриваемая призма
я
ая'.,
я
а
а
нечетная, то ее симплициальное под-
3 3
разделение получим согласно формуле (2.3); в результате приходим к соотношению
я
ая'.,
я
V
а
(и ,
я
(, (а
(а' (а
я
(,
я
(а"!,
и ..
, / ///
;
;
яя , // /// ,/// , а ,
;
я л
и
а-)
я
// \
и')
я
// \
и')
я
" \ и')
я
// \
и')
я
»> \
и. )
я
/// \
и )
(3.2)
X
v
v
1
X
2
v
v
г
я
я
и
я
я
и
и
я
я
/ //
я
и
и
я
// ///
/ ///
/ ///
* * * * * * * ¿я
где й?" е (й? , й''), йУ е (й? , й"'), й"'" е ( й'й"'). Если же эта призма - четная,
7 7 7 } 7 7 7 7 7 г
то для нее получаем подразделение применением формулы (2.5); соответствующее соотношение получается аналогично (для краткости его не выписываем).
3.3. СИМПЛИЦИАЛЬНЫЕ ПОДРАЗДЕЛЕНИЯ ПОЛОСЫ
Симплициальное подразделение полосы получается объединением симплициальных подразделений рассматриваемых призм. Поскольку построенные симплициальные подразделения призм согласованы (см. пункт 2), то объединение этих подразделений представляет собой правильное симплициальное подразделение полосы. При этом таблица получается объединением таблиц, стоящих в правых частях соотношений, подобных соотношению (3.2) для четных и нечетных призм, а таблица координат Ус должна содержать координаты всех вершин полученного симплициального подразделения в порядке их нумерации.
3.4. ТРИАНГУЛЯЦИЯ НИЖНЕГО ОСНОВАНИЯ ПОЛОСЫ
Триангуляция Л нижнего основания Л *+1 полосы П * уже получена, благодаря проведенному симплициальному подразделению этой полосы. Число треугольников комплекса Л 1 в четыре раза больше числа треугольников комплекса Л *. Таблицы, определяющие триангуляцию Л 1, можно извлечь следующим образом: в правой части соотношений вида (3.2) отбросить последний столбец и рассмотреть вторую, третью, четвертую и пятую строки; объединение получившихся таблиц для для 7 = 1,2, ..., ЫТ даст таблицу Т к. Таблица V с получится из упомянутой выше таблицы координат выборкой строк, соответствующих номерам вершин, встречающихся в таблице Т V.
4. НЕВЫРОЖДЕННОЕ СИМПЛИЦИАЛЬНОЕ ПОДРАЗДЕЛЕНИЕ
Теперь конкретизируем способ подразделения треугольников (2.1). Будем считать, что выполнено предположение
(В) Точки й''' ', й'', й'"" ' выбираются в серединах сторон (й' й"), (й' й'") и (й",й"') соответственно.
В этом пункте считается выполненным предположение (В) на всех этапах построения симплициального подразделения (то есть каждое подразделение треугольника на четыре треугольника производится проведением средних линий).
В рассматриваемом случае описанное в предыдущих пунктах построение при выполнении условий (А) и (В) сначала приведет к комплексу П 0, состоящему из треугольных призм, а затем - к симплициальному подразделению полосы П о. При этом нижнее основание Л1 полосы П0 получит в четыре раза более мелкую триангуляцию, чем верхнее основание Л о ; ввиду выполнения условия (В) для каждого треугольника, из триангуляции Л1 нижнего основания найдется подобный ему треугольник из триангуляции Ло верхнего основания.
Легко видеть, что в рассматриваемом случае (из-за условий (А) и (В)) после ортогонального проектирования триангуляции Л1 на слой Л 2 соединением вершин из Л1 с их проекциями получается комплекс из треугольных призм, который распадается на два комплекса Поо и П 01; их структура аналогична структуре комплекса П о: в каждом из них можно рассматривать четные и нечетные призмы. Построим симплициаль-ное подразделение комплекса П оо, затем аналогичным образом построим симплици-
альное подразделение комплекса П01. Объединение этих подразделений дает правильное симплициальное подразделение полосы П1.
Продолжение этого процесса приведет на ®-м шаге к появлению комплексов Па, состоящих из треугольных призм: в каждом из них можно рассматривать четные и нечетные призмы; здесь а = (а1,а2,...,ая) - двоичный вектор, ai е{0,1} , г = 1,2,..., Фактически получается бинарное дерево указанных комплексов, согласованные симп-лициальные подразделения которых могут быть построены последовательным применением описанного выше алгоритма симплициального разбиения полосы. Таким образом, получается правильное симплициальное подразделение слоя П я, где каждый треугольник подобен некоторому треугольнику предыдущего слоя с коэффициентом подобия 2.
Итак, установлено следующее утверждение
Теорема. Если выполнены условия (А), (В) и углы треугольников симплициального подразделения полосы По лежат в интервале (е, к - £), где ее (0, к/4), то углы треугольников симплициальных подразделений полос П я также лежат в этом интервале при любом ® =1,2, 3, ...
Литература
1. Сьярле Ф. Метод конечных элементов для эллиптических задач. М., 1980. 512 с.
2. Демьянович Ю.К. Симплициальные распространения сеточных функций // Методы вычислений / Под ред. З.И. Царьковой. СПб.: ЛГУ, 1973. Вып. 8. С. 32-50.
3. I. Murphy M., Mount D.M., Gable C.W. A point-placement strategy for conforming Delaunay tetrahedralization // Internat. J. Comput. Geometry and Appl. 2001. Vol. 11. № 6. P. 669-682.
4. Cohen-Steiner D., Eric Colin de Verdiere, Yvinec M. Conforming Delaunay triangulations in 3D // Proc. 18th Ann. ACM Symp. Comput. Geometry. Barcelona, 2002. June. P. 199-208.
5. Боровиков С.Н., Иванов И.Э., Крюков И.А. Построение тетраидризации Делоне с ограничениями для тел с криволинейными границами // Журнал вычислительной математики и математической физики, 2005. Т. 45, № 8, С. 1407-1423.
6. Котеров ВН. Построение пространственных сеток в многоступенчатых осевых турбинах с использованием вариационного барьерного метода // Журнал вычислительной математики и математической физики, 2005. Т. 45. № 8. С. 1374-1382.
7. Азарёнок Б.Н. О построении структурированных сеток в двумерных невыпуклых областях с помощью отображений // Журнал вычислительной математики и математической физики, 2009. Т. 49. №5. С. 1-13.
Abstract
New variants of nongenerate refinement for simplicial subdivision near the boundary of region are discussed. Construction of refinement is offered.
Keywords: algorithm, simplicial complex, subdivision, nondegeneracy, refinement, binary tree.
Арсентьева Евгения Петровна, аспирантка математико-механического факультете СПбГУ, Evgeniya.Arsentyeva @gmail. com
Демьянович Юрий Казимирович, доктор физико-математических наук, профессор, заведующий кафедрой параллельных алгоритмов математико-механического факультета СПбГУ, [email protected]
© Наши авторы, 2010. Our authors, 2010.