К основному контенту

Численное решение эллиптического уравнения МКР и МКЭ

При численном решении одного эллиптического уравнения обнаружена следующая особенность. Уравнение решалось методом конечных разностей и методом конечных элементов (пакет FreeFem++), и решения, полученные двумя методами, сравнивались друг с другом. На некоторых сетках проявлялась особенность, что при измельчении сетки разность двух решений увеличивалась. В связи с этим возникли сомнения в правильности вычислений методом конечных разностей.
Поэтому МКР и МКЭ были протестированы на тестовом примере, для которого точное решение известно.
Рассмотрим уравнение
в области
с граничными условиями третьего рода
(условия на остальных гранях куба выглядят аналогично).
Точное решение:
В следующей таблице приводится максимум модуля разности приближённого и точного решений для метода конечных разностей (N - размер сетки).

Nпогрешность
300.000514
500.000185
700.0000945
1000.0000463
1500.0000206
2000.0000111

При дискретизации методом конечных разностей использовалась аппроксимация граничных условий второго порядка. Можно заметить, что при уменьшении шага в 2 раза погрешность уменьшается примерно в 4 раза, что свидетельствует о том, что разностная схема действительно сходится со вторым порядком.

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

Nпогрешность P1погрешность P2
300.117010.01105
500.162340.00982
700.142490.01122
1000.176-
Вычислить решение на сетке размером 100 со сплайнами P2 не удалось, FreeFem++ сообщил об ошибке.

Проведённые вычисления показывают, что FreeFem++ оказался неэффективным по сравнению с методом конечных разностей (по крайней мере, для трёхмерной задачи).
Поэтому интересно было бы сравнить FreeFem++ с другим конечноэлементным пакетом, чтобы выяснить, характерна ли такая погрешность вообще для метода конечных элементов или это особенность FreeFem++.
С исходным кодом в пакете FreeFem++ можно ознакомиться здесь.
Отметим, что для запуска FreeFem++ при большом N может понадобиться 64-битная версия программы.

Дополнение от 31.10.15

Проведем аналогичный численный эксперимент для двумерной задачи.
В таблице указана погрешность для FreeFem++ (сплайны P1 и P2) и для метода конечных разностей. Можно видеть, что погрешность метода конечных разностей уменьшается примерно в 4 раза при уменьшении шага сетки в 2 раза. Для МКЭ со сплайнами P1 коэффициент несколько меньше 4, а для сплайнов P2 уменьшение в 8 раз.

NМКЭ P1МКЭ P2МКР
500.002565.0903e-60.000216
1000.0007766.4124e-75.4239e-5
2000.0002298.0454e-81.3561e-5
4006.6212e-51.0066e-83.3903e-6

Исходный код можно посмотреть здесь.

Комментарии

Глеб Гренкин написал(а)…
Примеры применения пакета FreeFem++:
http://people.sc.fsu.edu/~jburkardt/freefem++/freefem++.html
Глеб Гренкин написал(а)…
Имеет смысл вычислить разность точного и приближённого решений в 3D в узлах КЭ-сетки, не используя интерполяцию.
Автор написал(а)…
Если во FreeFem++ в 3D строить равномерную сетку в кубе с помощью функции cube, то сходимость нормальная.

10 0.0279
20 0.00992
30 0.00522
40 0.00327