Решаю задачу для нахождения звукового поля, отражённого от препятствия, методом конечных элементов.
Уравнение Гельмгольца.
Задача в неограниченной области сводится к задаче в ограниченной области, на границе

задаётся нелокальное граничное условие:

где

- оператор, который действует по следующей формуле (

,

- точка на единичной сфере):
 = \sum_{n=0}^{\infty}\sum_{|m|\le n}k\beta_n^m(u)\frac{(h_n^{(1)})'(kR)}{h_n^{(1)}(kR)}\mathcal Y_n^m(\mathbf{\hat x}),$$ $$[T(u)](R;\mathbf{\hat x}) = \sum_{n=0}^{\infty}\sum_{|m|\le n}k\beta_n^m(u)\frac{(h_n^{(1)})'(kR)}{h_n^{(1)}(kR)}\mathcal Y_n^m(\mathbf{\hat x}),$$](https://dxdy-01.korotkov.co.uk/f/4/c/2/4c252fa4e10296e47ec4226dc58c2e9282.png)

где

- заданные функции (сферические гармоники),

- тоже заданные функции (сферические функции Ханкеля),

- константа.
Вариационная формулировка имеет вид:

где

- полуторалинейная форма,

- антилинейная форма.
Здесь

, где

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

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