2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Метод конечных элементов, сложная вариационная формулировка
Сообщение12.06.2012, 05:32 
Решаю задачу для нахождения звукового поля, отражённого от препятствия, методом конечных элементов.
Уравнение Гельмгольца.
Задача в неограниченной области сводится к задаче в ограниченной области, на границе $\Gamma_R$ задаётся нелокальное граничное условие:
$$\frac{\partial p}{\partial n} = T(p),$$
где $T$ - оператор, который действует по следующей формуле ($R=|\mathbf x|$, $\mathbf{\hat x} = \frac{\mathbf x}{|\mathbf 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}),$$
$$\beta_n^m(u)=\frac{1}{R^2}\int_{\Gamma_R}u(R;\mathbf{\hat x})\overline{\mathcal Y_n^m(\mathbf{\hat x})}d\sigma,$$
где $\mathcal Y_n^m$ - заданные функции (сферические гармоники), $h_n^{(1)}$ - тоже заданные функции (сферические функции Ханкеля), $k$ - константа.
Вариационная формулировка имеет вид:
$$a(u,v)=F(v),$$
где $a(u,v)$ - полуторалинейная форма, $F(v)$ - антилинейная форма.
Здесь $a(u,v)=\ldots$+\int_{\Gamma_R}T(u)\overline{v}, где $T$ - оператор, который действует по формуле, приведённой выше.
Вся проблема в том, что здесь достаточно сложная вариационная формулировка, содержащая, во-первых, сумму (бесконечную сумму мы можем заменить конечной суммой, но эту конечную сумму нужно считать в цикле, а во FreeFem++ вариационная формулировка записывается в одну строчку, без циклов), а во-вторых, интеграл внутри суммы для вычисления коэффициентов Фурье $\beta_n^m$.
Поэтому не понятно, как записать такую вариационную формулировку, например, в пакете FreeFem++.
Во FreeFem++ вариационная формулировка обычно записывается аналитически, в одну строчку. Там нельзя записать интеграл от интеграла.
Может быть, кто-нибудь сталкивался с подобной задачей?
Какой конечноэлементный решатель подойдёт для решения этой задачи?
Может быть, придётся реализовывать метод конечных элементов вручную, правда, можно триангуляцию сделать во FreeFem++, а для решения СЛАУ использовать, например, SuperLU.

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group