Перенос граничных условий на ортогональную гексаэдрическую сетку

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

Рисунок 1 – Пример сложной поверхности, как части расчетной области

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

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

Приведем алгоритм, решающий выше поставленную задачу.

1) Рассмотрим сетку, которая является двойственной к исходной, то есть такую сетку, узлы которой являются центрами ячеек исходной расчетной сетки. Будем хранить трехмерный массив вещественных чисел, элементы которого соответствуют ячейкам двойственной сетки. Первоначально инициализируем элементы массива нулями.

2) Следующие операции проведем для всех .

• Для каждого треугольника из множества найдем набор ячеек двойственной сетки, которые имеют невырожденное пересечение с ним.

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

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

3) После обработки всех треугольников из множества рассмотрим множество тех граней ячеек исходной расчетной сетки, все четыре ребра которых отмечены. Множество граней из аппроксимируют исходную триангулированную поверхность.

4) Перенесем на грани множества площадь исходной триангулированной поверхности. Существует несколько подходов для переноса площадей. В нашей статье рассмотрим следующий способ:

a. Для каждой ячейки двойственной сетки найдем множество граней из множества граней , хотя бы одна вершина которых находится внутри ячейки .

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

Пример работы вышеописанного алгоритма применительно к поверхности, изображенной на рисунке 1, представлен на рисунке 2.

Рисунок 2 – Пример работы алгоритма

Следует отметить, что приведенный алгоритм, как практически всякий другой алгоритм вычислительной геометрии, имеющий дело с числами с плавающей точкой, использует -арифметику, что сказывается на точности получаемых результатов (например, значение перенесенных площадей). Также отметим, что в задачах вычислительной геометрии нередко приходится отдельно рассматривать определенные частные случаи, порой обработка этих случаев не менее трудна, чем обработка общего случая. Исключением не стал приведенный алгоритм. При реализации на компьютере данного алгоритма необходимо отдельно обрабатывать случаи, когда ребро двойственной расчетной сетки попадает в -окрестность триангулированной поверхности, так как иначе, следуя пункту 2 алгоритма, возможно появление «дырок» в перенесенной поверхности.

Описанный алгоритм решает достаточно общую задачу и может быть скорректирован соответствующим образом при решении более частных задач, таких как

• аппроксимация поверхности техногенных сооружений гранями ортогональной гексаэдрической сетки;

• аппроксимация поверхности пластины гранями ортогональной гексаэдрической сетки, при решении задач плоскопараллельной деформации, конечноразностным методом;

• аппроксимация топологии геологической поверхности гранями ортогональной гексаэдрической сетки.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>