[Из песочницы] Метод конечных элементов на примере уравнения Пуассона

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

image


с однородным краевым условием

image


где

image


image


image

Требуется найти функцию 602822bf28624736b7deffd4e3814c83.gif, решающую заданное уравнение.
Решение

Умножим начальное уравнение на функцию 2e8950db36a441aa8eb02ee2cab7d60d.gif, непрерывную, кусочно непрерывно-дифференцируемую и равную на краях нулю, и проинтегрируем полученное уравнение по всей области bc78b5f8c2424644851826caf0a3b41a.gif.
После применения формулы интегрирования по частям, получим следующее уравнение

12862929a5be4ffea9612447c75f891a.gif

Введем на области bc78b5f8c2424644851826caf0a3b41a.gif квадратную сетку с шагом 8ac742503c564a8dae587d86c0a74b2f.gif:

faf406b7155b4f9db2e66d1ca573d907.gif

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

2447dfea11c24556aba22b1c36e1e33c.png

Получим разбиение области bc78b5f8c2424644851826caf0a3b41a.gif на треугольные элементы b3a78050633248c0a6a13baa28899beb.gif — триангуляция области bc78b5f8c2424644851826caf0a3b41a.gif.

Будем искать приближенное решение данного уравнения как функцию 3b2ed9ea7b9f40eeb5b8a28add667c2f.gif, равную нулю на границе (краевое условие), непрерывную на области bc78b5f8c2424644851826caf0a3b41a.gif и линейную на каждом полученном элементе триангуляции.

Функцию 3b2ed9ea7b9f40eeb5b8a28add667c2f.gif можно представить в следующем виде:

f0d1ee0b2fc94bd2ae2ef95b084e47b3.gif

где значения функций в точке 647abdf2fc23495fbab716ffbe073f73.gif определены следующим образом:

51f436dc55334e459e1ece8644f52a33.gif


e748ff26665b403883eca9cbc731672a.gif

Подставив функцию 3b2ed9ea7b9f40eeb5b8a28add667c2f.gif в первое уравнение, осуществив преобразования и вынос констант из под знака интеграла, сведем задачу для каждой базисной функции к подсчету интегралов вида:

cdd9370094664efab3d5541590b96491.gif

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

7666a26c14be43b891cb30941d449670.png

с соответствующими значениями производных для каждого из 6 случаев:

dab24960a5974a0aa8a51295eacf08bb.png

После подсчетов интеграла уравнение с номером 1681f7df8c8f4ea3ba41419d708d62ca.gif будет выглядеть следующим образом:

f070297720cf453091a5a6171ed1f6d7.gif


где

6bd567f3ddaa4b65b69c509a305b5caa.gif


и при достаточно малом f022c38fdaf746db8d308cda82f98890:

c7d9dd04a15a47ab9db2d1b17b8fbdf6.gif

Следовательно, уравнение может быть переписано в следующем виде:

b25fc094abba4c2eae7cded29ed06ed7.gif


ac7d96d42b4f4472bc5dbc6d88f9bfd2.gif

Добавив гранитные условия, а именно:

dbeeb9fea530481388b82120a95c444e.gif


9f67b0652d964a1da446ef0c4f8ed75b.gif


получаем полную СЛАР, решая которую, находим значения функции в точках сетки.

© Habrahabr.ru