Вычислительные технологии Том 7, № 5, 2002
АВТОМАТИЧЕСКОЕ ПОСТРОЕНИЕ НАЧАЛЬНОГО ПРИБЛИЖЕНИЯ БЛОЧНО-СТРУКТУРИРОВАННОЙ КРИВОЛИНЕЙНОЙ СЕТКИ *
А. Ф. Хлйруллин, О. Б. ХАйРУЛЛИНА Институт математики и механики УрО РАН Екатеринбург, Россия e-mail: [email protected]
A method of automatic splitting into blocks and generating an initial approximation of block-structured curvilinear grid in two-dimensional domains of arbitrary configurations, connectivity, simple and complex topologies is developed with respect to minimal input data.
Введение
Экономичный алгоритм построения блочно-структурированных оптимальных криволинейных сеток в двумерных односвязных и многосвязных областях сложной геометрии с простой и сложной топологией в классе координатных сеток описан в [1, 2]. Характерной отличительной чертой вариационного метода, используемого в алгоритме, является специальный способ формализации критерия близости сеток равномерным по отношению к площадям соседних ячеек. Функционал, отвечающий за эту формализацию, приводит к гиперболической системе уравнений Эйлера — Остроградского, для решения которой используются комбинированные итерации, сочетающие дискретную и вариационную трактовки и приводящие к эффективному вычислительному процессу. Метод реализован в комплексе программ МОПС-2. Необходимая гладкость сеток на границах блоков обепечи-вается использованием метода перекрытия подобластей.
На основе [1, 2] создан параллельный алгоритм [3] расчета многоблочных оптимальных сеток большого размера (порядка сотен миллионов узлов) на многопроцессорной вычислительной системе за приемлемое время. Использование распределенной памяти системы позволило существенно сократить необходимую память для хранения матрицы координат точек сетки, плотно упаковывая ее независимо от раскроя области на блоки.
Многочисленные расчеты сеток для различных геометрий показали эффективность алгоритма и высокие качества сеток при решении внутренних [4] и внешних [5] задач газовой динамики.
* Работа выполнена при финансовой поддержке Российского фонда фундаментальных исследований, гранты №№00-01-00346, 02-01-00236.
© А. Ф. Хайруллин, О. Б. Хайруллина, 2002.
Разработка алгоритмов и программ автоматического построения сеток по минимальной входной информации [6] до сих пор остается актуальной проблемой. В работах [1,2] решены задачи автоматической организации перекрытия блоков при построении многоблочной сетки и автоматического определения линий неоднозначного отображения — разрезов и линий двойственности, если заданные области имеют сложную топологию [7].
При построении оптимальной сетки итерационным методом [1, 2] необходимо задать или рассчитать какое-либо начальное ее приближение, но без самопересекающихся ячеек. В [1, 2] делались некоторые попытки автоматизации построения начального приближения, но при расчете многоблочной сетки в односвязных и многосвязных областях сложных конфигураций и тем более сложных топологий в методике МОПС-2 все же присутствовала большая доля ручного труда, требующего от пользователя определенного опыта. Область (соответственно и ее образ) вручную раскраивалась на подобласти-блоки менее сложных конфигураций, определялись для них номера граничных вертикалей и горизонталей, между которыми располагались эти подобласти, с тем чтобы в дальнейшем организовать связи между блоками для расчета гладких сеточных линий на границах блоков. После этого в каждом блоке автоматически, а если блок сложной геометрии, то полуавтоматически, строилось начальное приближение [1, 2] с последующей автоматической оптимизацией сетки во всей области.
В [8] разработан геометрический метод автоматического построения начального приближения структурированной сетки в односвязной области произвольной геометрии, топологически эквивалентной прямоугольнику, по минимальной входной информации: заданной границе области в физической плоскости и заданной расстановке узлов либо заданному числу точек на ней.
Часто как односвязные, так и многосвязные области сложных конфигураций представляются в виде криволинейных многоугольников, топологически эквивалентных совокупности прямоугольников. В [9] разработан алгоритм автоматического раскроя таких областей на односвязные криволинейные четырехугольники, когда в физической плоскости заданы граница области, а также ее топологический образ в плоскости криволинейных координат.
Топология образа области выбирается пользователем. Фактором выбора часто оказываются условия решаемой задачи в заданной области, такие как, например, неоднородность физических процессов. Топологический образ может определяться и направлениями координатных линий криволинейной сетки, выбранными исполнителем расчета также с учетом решаемой задачи на ней (например, из условия совпадения направлений одного семейства сеточных линий с предполагаемыми линиями тока). Задавая расстановку узлов на границе, можно учесть специфику решаемой задачи.
В данной работе описываются модификации алгоритмов, описанных в [8, 9]. Уменьшение числа типов точек вогнутости образа границы области [9], другой метод улучшения качества рассчитываемой сетки начального приближения [8] и ряд других усовершенствований позволили автоматизировать расчет в двумерных областях любых связностей и любых конфигураций начального приближения сетки без самопересечений, когда заданы граница области и ее топологический образ. Эти алгоритмы вместе с алгоритмом автоматической оптимизации блочно-структурированной сетки [1, 2] реализованы в универсальном комплексе программ МОПС-2А.
1. Автоматический раскрой области на блоки
Граница Г заданной области D как в физической плоскости (x, у), так и в плоскости криволинейных координат (i,j) представляется в виде одной или нескольких кривых, которые могут быть как замкнутыми, так и незамкнутыми. Кривые во входных данных описываются пользователем наборами узловых точек Ak, каждая из которых определяется четырьмя числами Xk, yk ,ik, jk — ее координатами в физической плоскости и плоскости криволинейных координат (плоскости номеров узлов сетки). Обход границы может начинаться с любой точки и в любом направлении. В физической плоскости узловые точки программным образом соединяются прямолинейными отрезками или дугами окружностей заданных радиусов в заданном направлении (по часовой или против часовой стрелки) [1, 2]. В плоскости криволинейных координат (i, j) образы точек Ak соединяются отрезками прямых i = ik или j = jk. В результате образ заданной области D в плоскости криволинейных координат представляется в виде прямоугольника или многоугольника П со сторонами, параллельными осям координат i = 0, j = 0.
В П вводится структурированная или блочно-структурированная равномерная ортогональная сетка с M горизонталями и N вертикалями, при отображении которой на область D линии i = const, j = const становятся образами двух семейств криволинейных линий (горизонталей и вертикалей) сетки в D. Отображение сетки из плоскости (x, у) в плоскость (i,j) и обратно может быть неоднозначным: в плоскости (x,y) — вдоль линий двойственности (сетки типа H), в плоскости (i,j) — вдоль разрезов (сетки типа O и C) [7]. Оно может быть и неоднолистным.
Наличие линий двойственности и разрезов определяется программным образом в результате анализа входной информации о границе, так как линия двойственности и разрез при обходе границы заданной области — это дважды проходимые участки границы в том или в другом направлении.
Если две узловые точки границы имеют одинаковые криволинейные координаты, но разные координаты в физической плоскости и таких пар точек, соседних по горизонтали или по вертикали, более двух, то такая линия является линией двойственности. Для запоминания неоднозначности отображения в матрице координат сетки вводятся дополнительные строка или столбец, если линия двойственности является соответственно горизонталью или вертикалью.
Если две узловые соседние точки границы имеют одни и те же координаты в физической плоскости (x,у), но разные в плоскости криволинейных координат (i,j), то такой участок границы является разрезом.
Метод определения линий двойственности и разрезов подробно описан в [1, 2].
Алгоритм автоматического раскроя области на блоки состоит из определения геометрии и направления обхода 7-образа границы в плоскости (i,j), определения точек вогнутости границы y и их типа, проведения линий раскроя на блоки, формирования массива данных о полученных блоках.
Геометрия образа П заданной области D определяется в результате анализа информации о границе, для чего формируется массив G из опорных точек gk границы y, являющихся вершинами многоугольника П. В этих точках при обходе границы происходит переход с координатной линии одного семейства на координатную линию другого семейства. При анализе узловых точек границы y поочередно рассматриваются соседние три точки. Если эти точки лежат на одной прямой, при этом одна координата у всех точек одинакова, а другая при переходе от точки к точке убывает или возрастает, то средняя точка из
дальнейшего рассмотрения исключается (точки Ь, 4, е, /, г, д на рис. 1, в).
Если в массиве О останутся четыре точки, то образом границы заданной области является прямоугольник (например, граница области 1 на рис. 1; квадратными маркерами отмечены вершины криволинейного четырехугольника). В такой области можно построить сетку начального приближения, используя алгоритм, описанный в разд. 2.
а б в
Рис. 1. Начальное приближение сетки в области 1 с самопересечением (а) и без самопересечения (б); образ сетки (в).
Рис. 2. Типы точек вогнутости (а, в), примеры выделения блоков (б, г).
Если в О находятся больше четырех точек, то образ П является многоугольником, который для построения сетки следует разбить на блоки — прямоугольники. Существенную роль здесь играют точки вогнутости границы 7. Именно через них будут проводиться отрезки прямых, которые разделят рассматриваемые области на блоки.
При определении точек вогнутости необходимо знать, где находится расчетная область — справа от границы или слева. Если граничная кривая описана в направлении по часовой стрелке, то заданная область расположена справа от границы, если против часовой стрелки, то слева. Для определения направления обхода граничной кривой начало обхода границы смещается в точку с минимальными 1,3 на этой кривой и рассматриваются первые две точки с координатами 11,31 и 12,32. Граничная кривая описана в направлении по часовой стрелке, если 3 = 32, в противном случае — ^ = г2.
В случае многосвязных областей необходимо знать, где должна строиться сетка — внутри замкнутой граничной кривой или вне ее. Эта информация задается в исходных данных. Если сетка должна рассчитываться вне ее, то найденное направление обхода граничной кривой меняется на противоположное.
Образ П заданной области О — это многоугольник с прямыми углами, поэтому все
Критерии для точек вогнутости границы
Тип точки Обход по часовой стрелке Обход против часовой стрелки
1 гк-1 < гк+1, Зк-1 = Зк > Зк+1 гк-1 > гк+1, Зк-1 < Зк = .Зк+1
2 4-1 > гк+г, Зк-1 > Зк = Зк+1 гк-1 < гк+1, Зк-1 = Зк < Зк+1
3 гк-1 > гк+1, Зк-1 = Зк < Зк+1 гк-1 < гк+1, Зк-1 > Зк = Зк+1
4 гк-1 < гк+1, Зк-1 < Зк = Зк+1 гк-1 > гк+1, Зк-1 = Зк > Зк+1
точки вогнутости замкнутой границы 7 можно подразделить на четыре типа, схематично изображенные на рис. 2, а (участки границы выделены жирными линиями). Тип этих точек определяется в зависимости от направления обхода границы координатами гк, опорных точек дк границы 7 по критериям, приведенным в таблице.
Для описания границ областей сложных конфигураций могут быть использованы незамкнутые кривые, поэтому необходимо рассмотреть еще и пятый тип точек, приведенный на рис. 2, в. Это — концевые точки заданных кривых. Здесь отрезок, выделенный жирной линией, может быть горизонтальным или вертикальным, а рассматриваемая точка может находиться с той или другой стороны отрезка.
К пятому типу точек относятся и точки возврата на линиях двойственности (точки а,Ь,с на рис. 3, б), когда два участка границы в плоскости (х,у) отображаются на один отрезок координатной линии в плоскости (г^) (точки сетки, лежащие на линиях двойственности, отмечены маркерами). При анализе опорных точек рассматриваются поочередно каждые три соседние точки. Если у трех точек одна координата одинакова, а другая координата у средней точки либо больше, чем у соседних точек, либо меньше, то средняя точка является точкой возврата, т. е. точкой пятого типа.
Таким образом с помощью программы проанализируются все наборы узловых точек, описывающие заданные граничные кривые, определятся точки вогнутости образов этих кривых и их тип.
Часто в плоскости (г^) граничная кривая 7-образа О заданной области О сложной конфигурации и сложной топологии состоит из нескольких замкнутых кривых (“петель”) (рис. 3, 4). Такие “петли” следует выделить и далее рассматривать как самостоятельные граничные кривые.
Пусть, например, требуется построить сетку в области 3, сеточные линии которой имели бы направление как на рис. 4, г, определяя тем самым топологию области (рис. 4, б) и
а б
Рис. 3. Заданная граница области 2 (а), ее образ (б) и начальное приближение сетки (в).
Рис. 4. Заданная граница фрагмента области 3 (а), ее образ (б), начальное приближение сетки во фрагменте (в) и области (г).
сетки. Заданная область симметричная, поэтому сетку начального приближения можно построить в ее фрагменте (рис. 4, в) и с помощью процедуры Симметрия [1, 2] автоматически отобразить сначала на левую, а потом на нижнюю часть области или сначала на нижнюю, а потом на левую часть области.
Фрагмент области в данном случае содержит 6 разрезов: ЯМ, МК, ММ, МВ, ЯИ, ВА (жирные линии на рис. 4, а), которые в плоскости (і, і) имеют неоднозначное отображение [1, 2]. Кривая ГОИЯ(^КМГЕВСВАИЯЬКММВММГ описывает заданную границу фрагмента области. Кривая /дЬ,1т1дк1п1/е4сЬаН2т2Ік2п2ш2Ьш1п3/ на рис. 4, б является ее образом. Видно, что граница образа области состоит из трех “петель”.
Если граница 7-образа области содержит “петли”, то при обходе 7 какая-то точка встретится как минимум два раза. Если такая точка существует, то часть кривой с началом и концом в ней выделяется в отдельную кривую. В приведенном примере сначала граница 7 распадается на две замкнутые кривые — /дН1т1дк1 п1/ и /едсЬак2г2Ік2п2ш2Ьш1п3/, проходящие через точку /, далее из второй кривой выделяется “петля”, проходящая через точку Ь. В результате анализа программным образом граница распадется на три замкнутые кривые — /дН1г1 дк1п1 /, /е4сЬш1п3/ и ЬаН2г2Ік2п2ш2Ь, которые следует проанализировать вышеописанным способом на наличие точек вогнутости.
В массив координат точек сетки перед раскроем области на блоки вносятся координаты точек границы. Координаты остальных точек сетки области неизвестны, и они в массиве помечаются маркером Ш.
Линии раскроя области на блоки проводятся через опорные точки границы типов 1-5 в направлениях, указанных стрелками на рис. 2. В плоскости криволинейных координат и в физической плоскости эти линии являются отрезками прямых, координаты концевых точек которых отличны от Ш. На линиях раскроя точки расставляются равномерно с использованием метода линейной интерполяции.
Около каждой точки типа 1-4 могут быть выделены три блока (рис. 2, б), два из ко-
торых примыкают к границам области. Одна из вершин третьего блока, как и у первых двух, является точкой вогнутости границы, а две его стороны — линиями раскроя. Около точек типа 5 аналогично могут быть выделены четыре блока (рис. 2, г). Блоки выделяются в том случае, если к моменту их выделения координаты точек трех сторон блока уже известны. Длины сторон блока определяются так, чтобы в плоскости криволинейных координат противоположные его стороны были одной длины. Поочередный просмотр всех опорных точек границы позволяет провести полный раскрой области на блоки.
Может оказаться, что линия раскроя в плоскости (x, y) пересечет границу области или другую линию раскроя. Например, отрезок NU (рис. 4, в), которому в плоскости (i,j) соответствует отрезок n3u (рис. 4, б), пересекает участок границы BD (рис. 4, а), и из-за самопересечений сетку оптимизировать нельзя [1, 2]. Чтобы не было такой ситуации, осуществляется проверка на пересечение линии раскроя, являющейся стороной блока, с противоположной его стороной. Вычисляются координаты (xp,yp) точки P пересечения прямых, проведенных через концевые точки отрезка линии раскроя и каждой парой соседних точек (xij ,yi,j), (xij-1, yi j-1) другой стороны блока. Если линия раскроя — горизонталь сетки и для j =j1 выполняются неравенство xi,j1 < Xp < Xi,j1-1 или xi,j1 > Xp > Xi,j1-1, а также одно из неравенств yi,j1 < yp < yi,j1-1, yi,j1 > yp > yi,j1-1, то пересечение имеет место, проводится дополнительная линия раскроя — вертикаль сетки j = j1 , на которой равномерно расставляются точки. После чего через точку V с координатами xv = xi,j1, yv = yi,j1 проводится новая линия раскроя. В плоскости (x,y) теперь это будет ломаная линия NVU (рис. 4, в). Каждый из блоков, пересекаемый новой линией раскроя, делится линией j = j1 на два блока, начальное приближение сетки в которых строится уже без самопересечений. Аналогичные действия проводятся, если линия раскроя является вертикалью. Проверка на пересечение границы и проведение дополнительных линий раскроя в случае пересечения автоматически осуществляется в каждом блоке и для каждой линии раскроя.
Каждый блок описывается в плоскости (i, j) начальными и конечными вертикалями и горизонталями, между которыми он расположен в образе заданной области. Номера их соответствуют координатам i, j нижней левой и верхней правой вершин блока. Эта информация заносится в соответствующий массив данных и дальше анализируется.
Если через блок проходит линия двойственности, то он по этой линии делится на два блока, так как метод оптимизации сетки [1, 2] предполагает, что линии двойственности может принадлежать только граница блока.
Может оказаться, что в массиве какой-то блок описан два раза или более, имеются блоки, объединяющие несколько блоков, описанных в массиве. Например, при последовательном рассмотрении опорных точек b, g, h, s границы области 4 (рис. 5, б) выделятся блоки bcde,befg,bgva, gcdf,ghuv,gvab, hbau,hops,hstu, spqr, sbat, shop (пунктирные линии — линии раскроя). Блоки bgva,hops описаны два раза, блок gcdf состоит из двух блоков bcde, befg, а блок sbat — из трех блоков bgva, ghuv, hstu. Если блок объединяет несколько блоков или состоит из частей других блоков, то такие блоки автоматически дробятся на эти части блоков, данные о повторяющихся блоках из массива удаляются.
На рис. З, a и 4, a представлены фрагменты областей со сложной топологией (рис. З, б и 4, б), где присутствуют элементы базисных сеток типа O, C, H. В результате анализа границ по описанному алгоритму фрагмент области 2 автоматически распался на 10 блоков, а фрагмент области 3 — на 9 блоков.
После полного автоматического раскроя заданной области на блоки координаты точек сетки на их границах становятся известными, структурированная сетка начального
Рис. 5. Фрагмент области 4 (а), его образ, раскроенный на блоки (б), начальное приближение сетки в области 4 (в).
приближения без самопересечений автоматически будет рассчитываться в каждом блоке методом, описанным ниже.
2. Построение сетки в блоке
Метод автоматического построения структурированной сетки без самопересечений в блоке состоит в анализе граничной кривой с целью выявления точек ее выпуклости и вогнутости, расстановки точек сетки в области, контроля и улучшения ее качества.
Как и при раскрое области на блоки, существенным в этом методе является знание точек вогнутости и выпуклости границы, но здесь эти точки должны определяться в плоскости физических координат (ж, у).
Для поиска точек вогнутости и выпуклости в работе [10] используется уравнение ориентированной прямой
fk (ж, у) = (ук - Ук-\)х + (хк-1 - хк)у + (ХкУк-1 - Хк-1 ук) = 0.
Если выполняется условие fk(жк+1,ук+1) < 0, то вершина Ак+1 (рис. 6, а) лежит слева от прямой Ак-1 Ак, внутренний угол ААк-1 Ак Ак+1 больше п, точка Ак является точкой вогнутости границы. Если fk(хк+1, ук+1) > 0, то точка Ак — точка выпуклости. Но здесь направление обхода точек границы должно быть определенным, а именно по часовой стрелке, что является существенным недостатком при построении многоблочной сетки.
а б
Рис. 6. Определение точек выпуклости и вогнутости.
Точки вогнутости и выпуклости можно найти, используя условие принадлежности рассматриваемой точки замкнутой области, не зависящее от направления обхода ее границы. Если соединим точки Ак-1 и Ак+1 отрезком прямой (рис. 6, б), то получим новую область, в описание границы которой точка Ак не входит. Для каждой Ак (хк ,Ук) определяем число точек п пересечений прямой х = Хк с границей области, для которых у > ук. На возможное пересечение проверяются все участки АгАг+1 (г = 1, 2,...) границы. Если п нечетно, то точка Ак лежит внутри ограниченной области и является точкой вогнутости, в противном случае — точкой выпуклости. При увеличении числа заданных точек границы существенно возрастает время определения точек этим способом.
Будем анализировать точки границы способом, который сочетает в себе скорость первого способа и универсальность второго. Используя уравнение ориентированной прямой, определим признак выпуклости или вогнутости границы для каждой ее заданной точки. Далее найдем этот признак для первой точки границы вторым способом. Если признаки этой точки, определенные двумя способами, совпали, то граница описана по часовой стрелке и признаки точек определены верно. В противном случае считаем, что граница описана против часовой стрелки, и признаки всех ее точек меняем на противоположные.
Каждой точке сетки блока присвоим определенный признак £: £ = 31 — точкам вогнутости границы, £ = 21 — точкам ее выпуклости, £ = 1 — остальным точкам границы, £ = 0 — точкам сетки, находящимся внутри области с неизвестными пока координатами х, у. Узловые граничные точки формируются в два массива: в первом — точки с £ = 31, во втором — точки с £ = 21.
Для расстановки точек внутри области, ограниченной известной замкнутой кривой, воспользуемся принципом приоритета. Наивысший приоритет имеют точки с наибольшим значением признака £. Сеточные линии последовательно проводятся сначала из граничных точек первого массива — точек вогнутости, а потом — из точек границы второго массива — точек ее выпуклости. В результате область, как правило, разбивается на выпуклые многоугольники, в которых сетка строится методом линейной интерполяции.
Пусть имеем точку Т\ (рис. 7, а), из которой требуется провести сеточную линию. В плоскости криволинейных координат (г, ) ищется ближайшая ее соседняя точка Т2 с признаком £ = 0, координаты которой в плоскости (х, у) пока не определены. Положение точки Т2 совпадает с одним из восьми положений, схематично показанных на рис. 7, а, в зависимости от того, какое положение на границе или в области занимает точка Т1.
Если такая точка существует, то от Т в направлении найденной Т2 ищется точка Т3 с признаком £ > 1 и уже известными ее координатами (х,у), и отрезок Т1Т3 проверяется на пересечение с граничной кривой (кроме точек Т1,Т3). Если пересечение имеет место, то сеточные точки в данном направлении не расставляются, так как они могут попасть
Рис. 7. Схемы выбора направления расчета сеточных точек (а) и временного сеточного узла (б).
за пределы расчетной области. В этом случае делается попытка расставить точки сетки в другом направлении, для чего выбирается следующая точка Т2 с неопределенными координатами х,у. Если отрезок Т1Т3 не пересекает граничную кривую, то рассчитывается количество
к = тах{(|г1 - (Ь'1 - ^з1)}
точек на нем, определяются их координаты методом линейной интерполяции, присваивается этим точкам признак £ =1 (г1,^1 и г3,^3 — криволинейные координаты точек Т1, Т3).
При расстановке точек в диагональном направлении может оказаться, что точка пересечения диагоналей не принадлежит сетке, так как в плоскости криволинейных координат прямая Т1Т3 проходит между точками Т4 и Т5 (рис. 7, б) с признаками £ = 0. В результате неправильно рассчитывается шаг расстановки точек на диагонали, а рассчитанная сетка может иметь самопересекающиеся ячейки (рис. 8, а). Для правильного расчета шага сетки вместо Т3 вводится временный узел Т3 с координатами
, _ , х5 — х4 , _ у5 — у4 _ . *5 — *4 _ . ^5 — ^4
х3 = х4 + 2---, у3 = у4 + 2---, *3 = г4 + 2---, ^3 = ^4 + 2--
(*3, ^'3 — дробные числа), что позволяет рассчитывать сетку без самопересечений (рис. 8, б).
После расчета сеточной линии, образом которой является Т1Т3, точка Т1 исключается из массива и выбирается следующая точка. К следующей точке переходим и в случаях, если все точки Т2, окружающие Т1, имеют признак £ = 1 или отрезки Т1Т3 пересекают границу блока.
Если после работы с обоими массивами граничных точек они оказались не пустыми, то процедура проведения сеточных линий из узловых точек границы повторяется заданное число раз, но с учетом уже полученной информации о рассчитанных сеточных точках.
В результате расчетная область, как правило, разбивается на выпуклые многоугольники, в которых строится сетка, для чего просматривается весь массив точек сетки. В качестве точек Т1 выбираются любые точки, у которых £ = 0. Процесс продолжается до полного определения координат точек в расчетной области.
После построения сетки в блоке проводится автоматический контроль ее качества. При построении начального приближения сетки предлагаемым методом может оказаться, что из-за запрета выхода за пределы границы координаты некоторых узлов в плоскости (х, у) не определены. Ячейки с вершиной в таком узле будем называть “пустыми” ячейками. Наличие таких ячеек в сетке может привести к образованию самопересекающихся и перевернутых (вырожденных) ячеек [8], которые, как правило, концентрируются около узловых точек вогнутости границы (например, около точки О на рис. 1, а).
При контроле качества фиксируются криволинейные координаты *к ,]к нижних левых вершин найденных “пустых” и вырожденных ячеек. Из этих вершин выбираются те, кото-
рые лежат на граничной или приграничной сеточных линиях. Далее выбирается ближайшая к этим точкам узловая точка вогнутости границы. Через нее проводится горизонталь или вертикаль, разделяющая блок на два блока. При этом осуществляются проверка на пересечение с границей и соответствующие действия, как при раскрое области на блоки. В каждом новом блоке сетка строится заново (рис. 1, б). Таким образом, сетка начального приближения строится во всей заданной области.
Для расчета оптимальной сетки с гладкими сеточными линиями на границах стыковок блоков программным образом организуются перекрытия блоков. Определяется тип каждой стороны блока: жесткая, когда ее точки принадлежат границе области и координаты этих точек жестко определены; мягкая или разрез, когда точки сетки, лежащие на этой стороне блока, в процессе расчета могут перемещаться. Если блок имеет стороны, являющиеся мягкими или разрезами, то для организации перекрытия блок расширяется на одну координатную полосу за эту сторону. Технология автоматической организации перекрытия подробно описана в [1, 2].
Заключение
Разработанная методика раскроя области сложной геометрии на блоки и построения начального приближения структурированной сетки в блоках вместе с методикой перекрытия блоков, разработанной ранее, позволили решить проблему автоматического построения как начального приближения сетки, так и оптимальной многоблочной криволинейной сетки в двумерных областях любой связности и любой конфигурации по минимальной входной информации, когда заданы граница и расстановка узлов на ней в физической плоскости, а также ее образ в плоскости криволинейных координат. Программная реализация методики встроена в комплекс программ МОПС-2А, который теперь удовлетворяет требованиям, предъявляемым к алгоритмам и программам автоматического построения сеток [6], а именно минимальности используемой входной информации, универсальности, экономичности, надежности.
Время автоматического раскроя области на блоки и построения многоблочной сетки начального приближения с числом узлов порядка миллиона на компьютере типа Р-100 не превышает 1 мин.
Комплекс программ МОПС-2А может быть использован при построении сеток начального приближения в трехмерных областях достаточно широкого класса. В этом случае оптимальные двумерные сетки автоматически строятся на одном из семейств координатных поверхностей заданной области. Например, если для осесимметричных областей они являются боковыми поверхностями круговых конусов, то совокупность двумерных сеток, построенных на их развертках, будет образовывать пространственную сетку [5].
Список литературы
[1] KHAIRULLINA O. B. Method of constructing block regular optimal grids in twodimensional multiply connected domains of complicated geometries // Russ. J. Numer. Anal. and Math. Modelling. 1996. Vol. 11, No. 4. P. 343-358.
[2] ХАйРУЛЛИНА О. Б. Метод построения блочно-регулярных оптимальных сеток в двумерных многосвязных областях сложных конфигураций (МОПС-2а): Науч. докл. Екатеринбург: УрО РАН. 1998. 56 с.
[3] АРТЕМОВА Н. А., ХАйРУЛЛИН А. Ф., ХАйРУЛЛИНА О. Б. Параллельный алгоритм расчета оптимальных сеток // Вычисл. технологии. 2001. Т. 6, №2. С. 3-13.
[4] ВАГАНОВА Н. А., Коврижных О. О., КОКОВИХИНА О. В. И др. Газодинамические и акустические эффекты в камерах сгорания РДТТ // Первые Окуневские чтения: Тр. Всерос. научно-практ. конф. Т. 1. Баллистика. СПб.: БГТУ, 1999. С. 118-129.
[5] МАРТЮШОВ С. Н. Комплекс программ МОДАМС расчета обтекания тел идеальным газом // Вычисл. технологии. 1992. Т. 1, №2. Ч. 2. С. 232-239.
[6] SEREZHNIKOVA T. I., SlDOROV A. F., USHAKOVA O. V. On one method of construction of optimal curvilinear grids and its applications // Soviet J. Numer. Anal. Math. Modelling. 1989. Vol. 4, No. 2. P. 137-155.
[7] Thompson J. F., Warsi Z. U. A., Mastin C. W. Numerical Grid Generation: Foundations and Applications. N. Y. etc: North-Holland, 1985.
[8] ХАйРУЛЛИН А. Ф., ХАйРУЛЛИНА О. Б. Автоматическое построение начального приближения криволинейной сетки // Алгоритмы и программные средства параллельных вычислений: Науч. тр. Екатеринбург: УрО РАН, 2000. №4. С. 273-286.
[9] ХАйРУЛЛИН А. Ф., ХАйРУЛЛИНА О. Б. Раскрой области на блоки при построении многоблочной криволинейной сетки // Алгоритмы и программные средства параллельных вычислений: Науч. тр. Екатеринбург: УрО РАН, 2001. №5. С. 261-274.
[10] ГАСИЛОВА И. А. Алгоритм автоматического построения начального приближения криволинейной сетки для областей звездного типа // Вопр. атомной науки и техники. Сер. Мат. моделирование физических процессов. 1994. Вып. 3. C. 33-40.
Поступила в редакцию 6 марта 2002 г.