Решаю задачу для нахождения звукового поля, отражённого от препятствия, методом конечных элементов.
Уравнение Гельмгольца.
Задача в неограниченной области сводится к задаче в ограниченной области, на границе
задаётся нелокальное граничное условие:
где
- оператор, который действует по следующей формуле (
,
- точка на единичной сфере):
где
- заданные функции (сферические гармоники),
- тоже заданные функции (сферические функции Ханкеля),
- константа.
Вариационная формулировка имеет вид:
где
- полуторалинейная форма,
- антилинейная форма.
Здесь
, где
- оператор, который действует по формуле, приведённой выше.
Вся проблема в том, что здесь достаточно сложная вариационная формулировка, содержащая, во-первых, сумму (бесконечную сумму мы можем заменить конечной суммой, но эту конечную сумму нужно считать в цикле, а во FreeFem++ вариационная формулировка записывается в одну строчку, без циклов), а во-вторых, интеграл внутри суммы для вычисления коэффициентов Фурье
.
Поэтому не понятно, как записать такую вариационную формулировку, например, в пакете FreeFem++.
Во FreeFem++ вариационная формулировка обычно записывается аналитически, в одну строчку. Там нельзя записать интеграл от интеграла.
Может быть, кто-нибудь сталкивался с подобной задачей?
Какой конечноэлементный решатель подойдёт для решения этой задачи?
Может быть, придётся реализовывать метод конечных элементов вручную, правда, можно триангуляцию сделать во FreeFem++, а для решения СЛАУ использовать, например, SuperLU.