Журнал вычислительной математики и математической физики, 2020, T. 60, № 5, стр. 917-932

Параллельный алгоритм мозаично-скелетонного метода для численного решения трехмерной скалярной задачи дифракции в интегральной форме

А. А. Каширин 1*, С. И. Смагин 1**, М. Ю. Тимофеенко 1***

1 ВЦ ДВО РАН
680000 Хабаровск, ул. Ким Ю Чена, 65, Россия

* E-mail: elomer@mail.ru
** E-mail: smagin@ccfebras.ru
*** E-mail: maria.timofeenko@ya.ru

Поступила в редакцию 11.05.2018
После доработки 11.09.2019
Принята к публикации 14.01.2020

Полный текст (PDF)

Аннотация

Рассматривается трехмерная скалярная стационарная задача дифракции. Она формулируется в виде граничного слабо сингулярного интегрального уравнения Фредгольма I рода с одной неизвестной функцией. Указанное уравнение аппроксимируется системой линейных алгебраических уравнений, которая затем решается численно итерационным методом. С целью снижения вычислительной сложности на этапе приближенного решения этой системы используется мозаично-скелетонный метод. Библ. 23. Фиг. 10. Табл. 6.

Ключевые слова: задача дифракции, интегральное уравнение, численное решение, быстрый метод, мозаично-скелетонный метод, неполная крестовая аппроксимация.

ВВЕДЕНИЕ

Трехмерные задачи дифракции (трансмиссии) акустических волн на однородных локальных включениях встречаются в таких важных областях, как радиофизика, дефектоскопия, оптика, акустика океана и атмосферы, геофизика. Такие задачи решаются в основном численно, так как их аналитические решения могут быть найдены лишь в исключительных случаях.

При помощи методов теории потенциала упомянутые задачи могут быть сформулированы в интегральной форме. Изначально они сводились либо к системам двух слабо сингулярных граничных интегральных уравнений Фредгольма II рода с двумя неизвестными функциями (плотностями) [1], либо к смешанным системам, содержащим уравнения Фредгольма I и II рода [2]–[4]. Позже в работах [5], [6] были получены и исследованы эквивалентные этим задачам интегральные уравнения Фредгольма I и II рода с одной неизвестной плотностью. Такие уравнения удобны для численного исследования и получаемые в результате их дискретизации задачи менее требовательны к ресурсам компьютера по сравнению с другими эквивалентными формулировками.

В настоящей работе для численного решения задачи дифракции используется эквивалентное ей слабо сингулярное граничное интегральное уравнение Фредгольма I рода с одной неизвестной функцией [7]–[10]. Для построения дискретного аналога этого уравнения применяется специальный метод осреднения ядер слабо сингулярных интегральных операторов [11], [12]. Суть его заключается в следующем. Неизвестная плотность отыскивается в виде линейной комбинации гладких финитных функций, образующих разбиение единицы на поверхности включения. При дискретизации интегрального уравнения поверхностные интегралы приближаются выражениями, содержащими объемные интегралы. Это позволяет рассчитывать коэффициенты систем линейных алгебраических уравнений (СЛАУ), аппроксимирующих интегральные уравнения, по весьма простым формулам. Впервые такой подход был применен в [11] для численного решения интегральных уравнений, эквивалентных трехмерным задачам Дирихле для уравнения Лапласа. Позже он использовался в работах [7], [12]–[14].

Матрицы получаемых СЛАУ являются плотными. Прямые методы позволяют решать эти СЛАУ за $O({{n}^{3}})$ операций, где $n$ – порядок матрицы. В настоящей работе для их численного решения используется обобщенный метод минимальной невязки (GMRES) [15]. Как было установлено ранее [7], сложность GMRES в данном случае имеет оценку $O(m{{n}^{2}})$, где $m$ – количество итераций, которое значительно меньше $n$ и зависит от него весьма слабо. После того, как приближенное решение интегрального уравнения найдено, искомое приближенное решение задачи дифракции при помощи интегральных представлений восстанавливается в любой точке пространства.

На этапе решения СЛАУ при помощи GMRES большую часть времени занимают матрично-векторные умножения. Для снижения затрат времени в таких случаях предлагается использовать один из быстрых методов приближенного матрично-векторного умножения (см. обзор в [16]), т.е. таких методов, сложность которых составляет $o({{n}^{2}})$ при $n \to \infty $. В настоящей работе для этого применяется мозаично-скелетонный метод [14], [17], [18]. Его основная идея заключается в аппроксимации больших блоков плотных матриц матрицами малого ранга. В результате матрица СЛАУ полностью не вычисляется и не сохраняется, а в процедуре матрично-векторного умножения используется ее малоранговое приближение. Для реализации метода можно использовать ранее созданные алгоритмы и программы численного решения задач дифракции. В этом случае в них необходимо добавить только процедуры построения и хранения приближенной матрицы и изменить модуль матрично-векторного умножения, а метод дискретизации и процедура вычисления элементов исходной матрицы остаются прежними. Преимуществом метода также является возможность экономичного хранения приближенной матрицы, снижающего требования к памяти компьютера.

Ниже излагается численный метод решения трехмерной задачи дифракции, сформулированной в виде слабо сингулярного граничного интегрального уравнения Фредгольма I рода с одной неизвестной функцией. Описываются применение мозаично-скелетонного метода к численному решению такого уравнения и технология OpenMP для организации параллельных вычислений. Приводятся результаты численных экспериментов, которые позволяют судить об эффективности применяемого подхода.

1. ИСХОДНАЯ ЗАДАЧА И ЭКВИВАЛЕНТНОЕ ЕЙ ИНТЕГРАЛЬНОЕ УРАВНЕНИЕ

Рассмотрим трехмерное евклидово пространство ${{\mathbb{R}}^{3}}$ с ортогональной системой координат $o{{x}_{1}}{{x}_{2}}{{x}_{3}}$, заполненное однородной изотропной средой с плотностью ${{\rho }_{e}}$, скоростью распространения акустических колебаний ${{c}_{e}}$ и коэффициентом поглощения ${{\gamma }_{e}}$, в котором имеется ограниченное произвольной замкнутой поверхностью $\Gamma $ однородное изотропное включение с плотностью ${{\rho }_{i}}$, скоростью звука ${{c}_{i}}$ и коэффициентом поглощения ${{\gamma }_{i}}$. Области ${{\mathbb{R}}^{3}}$, занятые включением и вмещающей средой, обозначим через ${{\Omega }_{i}}$ и ${{\Omega }_{e}}$ (${{\Omega }_{e}} = {{\mathbb{R}}^{3}}{\backslash }{{\bar {\Omega }}_{i}}$) соответственно.

Пусть в области ${{\Omega }_{e}}$ имеются гармонические источники звука, возбуждающие во вмещающей среде исходное волновое поле давлений ${{u}_{0}}$. Звуковые волны распространяются в пространстве и, достигая включения, рассеиваются на нем. В результате в области ${{\Omega }_{e}}$ возникают отраженные волны, а в области ${{\Omega }_{i}}$ появляются проходящие волны. Поэтому комплексную амплитуду полного поля давлений $u$ можно представить в виде:

$u = \left\{ \begin{gathered} {{u}_{i}},\quad x \in {{\Omega }_{i}}, \hfill \\ {{u}_{e}} + {{u}_{0}},\quad x \in {{\Omega }_{e}}, \hfill \\ \end{gathered} \right.$
где ${{u}_{i}}$, ${{u}_{e}}$ – комплексные амплитуды поля давлений проходящего и отраженного волновых полей.

Сформулируем исходную задачу.

Задача 1. Найти в ограниченной области ${{\Omega }_{i}}$ трехмерного евклидова пространства ${{\mathbb{R}}^{3}}$ и в неограниченной области ${{\Omega }_{e}} = {{\mathbb{R}}^{3}}{\backslash }{{\Omega }_{i}}$, разделенных замкнутой поверхностью $\Gamma \in {{C}^{{r + \beta }}}$, $r + \beta > 1$, комплекснозначные функции ${{u}_{{i(e)}}} \in {{H}^{1}}({{\Omega }_{{i(e)}}},\Delta )$, удовлетворяющие интегральным тождествам

(1)
$\int\limits_{{{\Omega }_{{i(e)}}}} {\nabla {{u}_{{i(e)}}}} \nabla {v}_{{i(e)}}^{ * }dx - k_{{i(e)}}^{2}\int\limits_{{{\Omega }_{{i(e)}}}} {{{u}_{{i(e)}}}} {v}_{{i(e)}}^{ * }dx = 0\quad \forall {{{v}}_{{i(e)}}} \in H_{0}^{1}({{\Omega }_{{i(e)}}}),$
условиям сопряжения на границе раздела сред из ${{\Omega }_{i}}$ и ${{\Omega }_{e}}$
(2)
$\begin{gathered} \mathop {\left\langle {u_{i}^{ - } - u_{e}^{ + },\mu } \right\rangle }\nolimits_\Gamma = \mathop {\left\langle {{{f}_{0}},\mu } \right\rangle }\nolimits_\Gamma \quad \forall \mu \in {{H}^{{ - 1/2}}}(\Gamma ), \\ \mathop {\left\langle {\eta ,{{p}_{i}}{{N}^{ - }}{{u}_{i}} - {{p}_{e}}{{N}^{ + }}{{u}_{e}}} \right\rangle }\nolimits_\Gamma = \mathop {\left\langle {\eta ,{{p}_{e}}{{f}_{1}}} \right\rangle }\nolimits_\Gamma \quad \forall \eta \in {{H}^{{1/2}}}(\Gamma ), \\ \end{gathered} $
а также условию излучения на бесконечности для ${{u}_{e}}$
(3)
$\partial {{u}_{e}}{\text{/}}\partial \left| x \right| - i{{k}_{e}}{{u}_{e}} = o\left( {{{{\left| x \right|}}^{{ - 1}}}} \right),\quad \left| x \right| \to \infty ,$
если на границе включения $\Gamma $ заданы функции ${{f}_{0}} \in {{H}^{{1/2}}}(\Gamma )$ и ${{f}_{1}} \in {{H}^{{ - 1/2}}}(\Gamma )$.

Здесь ${v}{\kern 1pt} {\text{*}}$ – комплексно сопряженная к ${v}$ функция, $\mathop {\left\langle { \cdot , \cdot } \right\rangle }\nolimits_\Gamma $ – отношение двойственности на ${{H}^{{1/2}}}(\Gamma ) \times {{H}^{{ - 1/2}}}(\Gamma )$, обобщающее скалярное произведение в ${{H}^{0}}(\Gamma )$, ${{u}^{ \pm }} \equiv {{\gamma }^{ \pm }}u$, ${{\gamma }^{ - }}:{{H}^{1}}({{\Omega }_{i}}) \to {{H}^{{1/2}}}(\Gamma )$, ${{\gamma }^{ + }}:{{H}^{1}}({{\Omega }_{e}}) \to {{H}^{{1/2}}}(\Gamma )$ – операторы следов, ${{N}^{ - }}:{{H}^{1}}({{\Omega }_{i}},\Delta ) \to {{H}^{{ - 1/2}}}(\Gamma )$, ${{N}^{ + }}:{{H}^{1}}({{\Omega }_{e}},\Delta ) \to {{H}^{{ - 1/2}}}(\Gamma )$ – операторы нормальных производных [19], ${{f}_{0}} = u_{0}^{ + }$, ${{f}_{1}} = {{N}^{ + }}{{u}_{0}}$,

$k_{{i\left( e \right)}}^{2} = \omega (\omega + i{{\gamma }_{{i\left( e \right)}}}){\text{/}}c_{{i\left( e \right)}}^{2},\quad \operatorname{Im} ({{k}_{{i(e)}}}) \geqslant 0,\quad {{p}_{{i\left( e \right)}}} = c_{{i\left( e \right)}}^{{ - 2}}k_{{i\left( e \right)}}^{{ - 2}}\rho _{{i\left( e \right)}}^{{ - 1}},$
$\omega $ – круговая частота колебаний, ${{c}_{{i(e)}}} > 0$, ${{\rho }_{{i(e)}}} > 0$, ${{\gamma }_{{i(e)}}} \geqslant 0$. Определения используемых здесь и далее функциональных пространств имеются в работе [19].

Замечание 1. Если ${\text{Im}}({{k}_{e}}) = 0$, то ${{u}_{e}} \in H_{{{\text{loc}}}}^{1}({{\Omega }_{e}},\Delta )$.

В работах [7], [8] доказана

Теорема 1. Задача 1 имеет не более одного решения.

Введем обозначения

(4)
$\begin{gathered} ({{A}_{{i(e)}}}q)(x) \equiv \mathop {\left\langle {{{G}_{{i(e)}}}(x, \cdot ),q} \right\rangle }\nolimits_\Gamma ,\quad ({{B}_{{i(e)}}}q)(x) \equiv \mathop {\left\langle {{{N}_{x}}{{G}_{{i(e)}}}(x, \cdot ),q} \right\rangle }\nolimits_\Gamma , \\ (B_{{i(e)}}^{ * }q)(x) \equiv \mathop {\left\langle {{{N}_{{( \cdot )}}}{{G}_{{i(e)}}}(x, \cdot ),q} \right\rangle }\nolimits_\Gamma ,\quad {{G}_{{i(e)}}}(x,y) = exp\left( {i{{k}_{{i(e)}}}\left| {x - y} \right|} \right){\text{/}}\left( {4\pi \left| {x - y} \right|} \right). \\ \end{gathered} $

Решение задачи 1 будем искать в виде потенциалов

(5)
$\begin{gathered} {{u}_{e}}(x) = ({{A}_{e}}q)(x),\quad x \in {{\Omega }_{e}}, \\ {{u}_{i}}(x) = ({{p}_{{ei}}}{{A}_{i}}({{N}^{ + }}{{u}_{e}} + {{f}_{1}}) - B_{i}^{ * }(u_{e}^{ + } + {{f}_{0}}))(x),\quad x \in {{\Omega }_{i}}, \\ \end{gathered} $
где $q \in {{H}^{{ - 1/2}}}(\Gamma )$ – неизвестная плотность, ${{f}_{0}} \in {{H}^{{1/2}}}(\Gamma )$, ${{f}_{1}} \in {{H}^{{ - 1/2}}}(\Gamma )$, ${{p}_{{ei}}} = {{p}_{e}}{\text{/}}{{p}_{i}}$.

Ядрами этих интегральных операторов являются фундаментальные решения уравнений Гельмгольца и их нормальные производные. Поэтому, как показано в работе [8], они удовлетворяют тождествам (1) и условию излучения на бесконечности (3). Кроме того, выполнение для них первого из условий сопряжения (2) автоматически влечет за собой выполнение второго условия сопряжения. Подставляя потенциалы (5) в первое условие сопряжения, получаем слабо сингулярное интегральное уравнение Фредгольма I рода для определения неизвестной плотности $q$:

(6)
$\mathop {\left\langle {Cq,\mu } \right\rangle }\nolimits_\Gamma = \mathop {\left\langle {{{f}_{2}},\mu } \right\rangle }\nolimits_\Gamma \quad \forall \mu \in {{H}^{{ - 1/2}}}(\Gamma ),$
где

$C = (0.5 + B_{i}^{ * }){{A}_{e}} + {{p}_{{ei}}}{{A}_{i}}(0.5 - {{B}_{e}}),\quad {{f}_{2}} = - (0.5 + B_{i}^{ * }){{f}_{0}} + {{p}_{{ei}}}{{A}_{i}}{{f}_{1}}.$

Для гладких функций уравнение (6) может быть записано в следующем виде [8]:

$0.5\int\limits_\Gamma {({{G}_{e}}(x,y)} + {{p}_{{ei}}}{{G}_{i}}(x,y))q(y)d{{\Gamma }_{y}} + \int\limits_\Gamma K (x,y)q(y)d{{\Gamma }_{y}} = {{f}_{2}}(x),\quad x \in \Gamma ,$
$K(x,y) = \int\limits_\Gamma {({{G}_{e}}(z,y){{N}_{z}}{{G}_{i}}(x,z)} - {{p}_{{ei}}}{{G}_{i}}(x,z){{N}_{z}}{{G}_{e}}(z,y))d{{\Gamma }_{z}},$
${{f}_{2}}(x) = - 0.5{{f}_{0}}(x) + \int\limits_\Gamma {({{p}_{{ei}}}{{G}_{i}}(x,y){{f}_{1}}(y) - {{N}_{y}}{{G}_{i}}(x,y){{f}_{0}}(y))} d{{\Gamma }_{y}}.$

Справедлива [7]

Теорема 2. Пусть ${{f}_{0}} \in {{H}^{{1/2}}}(\Gamma )$, ${{f}_{1}} \in {{H}^{{ - 1/2}}}(\Gamma )$, ${{\gamma }_{e}} > 0$ или $\omega $ не является собственной частотой задачи

(7)
$\Delta u + k_{e}^{2}u = 0,\quad x \in {{\Omega }_{i}},\quad {{u}^{ - }} = 0.$
Тогда уравнение (6) корректно разрешимо в классе плотностей $q \in {{H}^{{ - 1/2}}}(\Gamma )$, и формулы (5) дают решение задачи 1.

2. ЧИСЛЕННЫЙ МЕТОД

Применяемый метод численного решения приведен в работе [9] и представляет собой развитие методики, предложенной и впервые апробированной в работе [11]. Кратко опишем общую схему его реализации. Построим покрытие поверхности $\Gamma $ системой ${\text{\{ }}{{\Gamma }_{m}}{\text{\} }}_{{m = 1}}^{M}$ окрестностей узловых точек $x_{m}^{'} \in \Gamma $, лежащих внутри сфер радиусов ${{h}_{m}}$ с центрами в $x_{m}^{'}$, и обозначим через $\left\{ {{{\varphi }_{m}}} \right\}$ подчиненное ему разбиение единицы. В качестве ${{\varphi }_{m}}$ будем использовать функции

${{\varphi }_{m}}(x) = \varphi _{m}^{'}(x)\mathop {\left( {\sum\limits_{k = 1}^M {\varphi _{k}^{'}} (x)} \right)}\nolimits^{ - 1} ,\quad \varphi _{m}^{'}(x) = \left\{ \begin{gathered} {{(1 - r_{m}^{2}{\text{/}}h_{m}^{2})}^{3}},\quad {{r}_{m}} < {{h}_{m}}, \hfill \\ 0,\quad {{r}_{m}} \geqslant {{h}_{m}}, \hfill \\ \end{gathered} \right.$
где $x \in \Gamma $, ${{r}_{m}} = \left| {x - x_{m}^{'}} \right|$, ${{\varphi }_{m}} \in {{C}^{1}}(\Gamma )$ при $\Gamma \in {{C}^{{r + \beta }}}$, $r + \beta > 1$.

Приближенное решение уравнения (6) будем искать на сетке ${\text{\{ }}{{x}_{m}}{\text{\} }}$,

${{x}_{m}} = \frac{1}{{\mathop {\bar {\varphi }}\nolimits_m }}\int\limits_\Gamma x {{\varphi }_{m}}d\Gamma ,\quad \mathop {\bar {\varphi }}\nolimits_m = \int\limits_\Gamma {{{\varphi }_{m}}} d\Gamma ,$
узлами которой являются центры тяжестей функций ${{\varphi }_{m}}$. Будем предполагать, что для всех $m = 1,2,\; \ldots ,\;M$ выполняются неравенства
$0 < h{\text{'}} \leqslant \left| {{{x}_{m}} - {{x}_{n}}} \right|,\quad m \ne n,\quad n = 1,2,\; \ldots ,\;M,$
$h{\text{'}} \leqslant {{h}_{m}} \leqslant h,\quad h{\text{/}}h{\text{'}} \leqslant {{q}_{0}} < \infty ,$
где $h$, $h{\text{'}}$ – положительные числа, зависящие от $M$, ${{q}_{0}}$ не зависит от $M$.

Вместо заданной на $\Gamma $ неизвестной функции $q$ будем искать обобщенную функцию $q{{\delta }_{\Gamma }}$, действующую по правилу

$\mathop {\left( {q{{\delta }_{\Gamma }},\eta } \right)}\nolimits_{{{R}^{3}}} = \mathop {\left\langle {q,\eta } \right\rangle }\nolimits_\Gamma \quad \forall \eta \in {{H}^{1}}({{\mathbb{R}}^{3}}).$
Приближать эту функцию будем выражением
$q\left( x \right){{\delta }_{\Gamma }}\left( x \right) \approx \sum\limits_{n = 1}^M {{{q}_{n}}} {{\bar {\varphi }}_{т}}{{\psi }_{n}}(x),$
где ${{q}_{n}}$ – неизвестные коэффициенты,

${{\psi }_{n}}(x) = {{(\pi \sigma _{n}^{2})}^{{ - 3/2}}}exp( - {{(x - {{x}_{n}})}^{2}}{\text{/}}\sigma _{n}^{2}),\quad \sigma _{n}^{2} = 0.5{{\bar {\varphi }}_{n}}.$

В работе [9] показано, что для любых функций $\eta \in {{H}^{1}}({{\mathbb{R}}^{3}})$ и $q \in {{H}^{1}}(\Gamma )$ справедливо равенство

$\mathop {\left\langle {q,\eta } \right\rangle }\nolimits_\Gamma = \sum\limits_{n = 1}^M {{{q}_{n}}} {{\bar {\varphi }}_{т}}{{({{\psi }_{n}},\eta )}_{{{{R}^{3}}}}} + O({{h}^{2}}).$

Приближение плотности потенциала простого слоя объемной плотностью позволяет получать простые формулы для аппроксимации интегрального оператора ${{A}_{{i(e)}}}$ из (4). Теоретическое обоснование изложенного подхода имеется в работе [11].

Интегральные операторы из (4) на $\Gamma $ аппроксимируются выражениями [7], [12]

$\mathop {\left\langle {{{A}_{{i(e)}}}q,{{\varphi }_{m}}} \right\rangle }\nolimits_\Gamma \approx \sum\limits_{n = 1}^M {A_{{i(e)}}^{{mn}}} {{q}_{n}},\quad m = 1,2,\; \ldots ,\;M,\quad A_{{i(e)}}^{{mn}} \equiv {{A}_{{mn}}}({{k}_{{i(e)}}}),$
${{A}_{{mn}}}\left( k \right) = \frac{{{{{\bar {\varphi }}}_{т}}{{{\bar {\varphi }}}_{n}}}}{{8\pi {{r}_{{mn}}}}}exp(\mu _{{mn}}^{2} - \gamma _{{mn}}^{2})(w(z_{{mn}}^{ - }) - w(z_{{mn}}^{ + })),\quad n \ne m,$
(8)
${{A}_{{mm}}}(k) = \frac{{\bar {\varphi }_{m}^{2}}}{{4\pi }}exp(\mu _{{mm}}^{2})\left( {ikw({{\mu }_{{mm}}}) + \frac{{\sqrt {2\pi } }}{{\mathop {\bar {\varphi }}\nolimits_m }}\left( {\frac{{\bar {\varphi }_{m}^{{}}}}{{\pi {{\sigma }_{m}}}} + 2{{\sigma }_{m}} - \frac{{{{k}^{2}}\sigma _{m}^{3}}}{3}} \right)} \right),$
$\sigma _{{mn}}^{2} = \sigma _{m}^{2} + \sigma _{n}^{2},\quad {{\mu }_{{mn}}} = 0.5k{{\sigma }_{{mn}}},\quad z_{{mn}}^{ \pm } = {{\mu }_{{mn}}} \pm i{{\gamma }_{{mn}}},$
${{\gamma }_{{mn}}} = {{r}_{{mn}}}{\text{/}}{{\sigma }_{{mn}}},\quad {{i}^{2}} = - 1,\quad w(z) = - \frac{{2i}}{{\sqrt \pi }}exp( - {{z}^{2}})\int\limits_z^\infty {exp({{t}^{2}})} dt,$
(9)
$\mathop {\left\langle {aq + {{B}_{{i(e)}}}q,{{\varphi }_{m}}} \right\rangle }\nolimits_\Gamma \approx \sum\limits_{n = 1}^M {B_{{i(e)}}^{{mn}}} {{q}_{n}},\quad m = 1,2,\; \ldots ,\;M,\quad a = \pm 0.5,$
$\mathop {\left\langle {aq + B_{{i(e)}}^{ * }q,{{\varphi }_{m}}} \right\rangle }\nolimits_\Gamma \approx \sum\limits_{n = 1}^M {B_{{i(e)}}^{{nm}}} {{q}_{n}},\quad m = 1,2,\; \ldots ,\;M,$
(10)
$B_{{i(e)}}^{{mn}} = \frac{{{{\eta }_{{mn}}}}}{{4\pi r_{{mn}}^{2}}}exp(i{{k}_{{i(e)}}}{{r}_{{mn}}})(i{{k}_{{i(e)}}}{{r}_{{mn}}} - 1){{\bar {\varphi }}_{m}}{{\bar {\varphi }}_{n}},\quad n \ne m,$
$B_{{i(e)}}^{{mm}} = ( - \left| a \right| + a + \mathop {{\text{Gs}}}\nolimits_m ){{\bar {\varphi }}_{m}},\quad {{\eta }_{{mn}}} = \sum\limits_{l = 1}^3 {{{n}_{{ml}}}} \frac{{{{x}_{{ml}}} - {{x}_{{nl}}}}}{{{{r}_{{mn}}}}},\quad \mathop {{\text{Gs}}}\nolimits_m = - \sum\limits_{n \ne m}^M {\frac{{{{\eta }_{{nm}}}{{{\bar {\varphi }}}_{n}}}}{{4\pi r_{{mn}}^{2}}},} $
${{n}_{{ml}}}$ – компоненты единичного вектора внешней нормали к поверхности $\Gamma $ в точке ${{x}_{m}}$.

Оператор в левой части уравнения (6) аппроксимируем композициями операторов (8)–(10):

(11)
$\mathop {\left\langle {Cq,{{\varphi }_{m}}} \right\rangle }\nolimits_\Gamma \approx \sum\limits_{n = 1}^M {{{C}^{{mn}}}} {{q}_{n}},\quad {{C}^{{mn}}} = \sum\limits_{k = 1}^M {(B_{i}^{{km}}A_{e}^{{kn}} - {{p}_{{ei}}}A_{i}^{{mk}}B_{e}^{{kn}})} {\kern 1pt} ,\quad m = 1,2,\; \ldots ,\;M,$
а правую часть уравнения (6) – по формуле
(12)
$\mathop {\left\langle {{{f}_{2}},{{\varphi }_{m}}} \right\rangle }\nolimits_\Gamma \approx \sum\limits_{n = 1}^M {({{p}_{{ei}}}A_{i}^{{mn}}{{f}_{{1n}}} - B_{i}^{{nm}}{{f}_{{0n}}})} ,\quad {{f}_{{lm}}} = \mathop {\left\langle {{{f}_{l}},{{\varphi }_{m}}{\text{/}}{{{\bar {\varphi }}}_{m}}} \right\rangle }\nolimits_\Gamma ,\quad l = 0,1,\quad m = 1,2,\; \ldots ,\;M.$
Решая полученную СЛАУ, находим приближенное решение интегрального уравнения в точках дискретизации. После этого приближенное решение исходной задачи дифракции с помощью интегральных представлений может быть найдено в любой точке пространства.

При решении СЛАУ с помощью GMRES на каждой итерации необходимо выполнить матрично-векторное умножение вида (11). Остановимся на этом подробнее. Для произвольного вектора с компонентами ${{p}_{n}}$ справедливо тождество:

$\sum\limits_{n = 1}^M {{{C}^{{mn}}}} {{p}_{n}} \equiv \sum\limits_{k = 1}^M {B_{i}^{{km}}} \left( {\sum\limits_{n = 1}^M {A_{e}^{{kn}}} {{p}_{n}}} \right) - {{p}_{{ei}}}\sum\limits_{k = 1}^M {A_{i}^{{mk}}} \left( {\sum\limits_{n = 1}^M {B_{e}^{{kn}}} {{p}_{n}}} \right),\quad m = 1,2,\; \ldots ,\;M.$
Матрично-векторное умножение по формуле из левой части тождества предварительно требует $2{{M}^{3}} + {{M}^{2}}$ операций умножения для вычисления элементов ${{C}^{{mn}}}$, а затем ${{M}^{2}}$ умножений на каждой итерации. Правая часть этого тождества позволяет находить данное матрично-векторное произведение без вычисления элементов ${{C}^{{mn}}}$ и требует $4{{M}^{2}} + M$ операций умножения на итерацию. Поскольку количество итераций существенно мало по сравнению с порядком СЛАУ (см. результаты вычислительных экспериментов), использование правой части тождества значительно снижает вычислительную сложность решения задачи.

Дальнейшее уменьшение вычислительной сложности матрично-векторного умножения и, как следствие, всей задачи связано с использованием мозаично-скелетонного метода.

3. МОЗАИЧНО-СКЕЛЕТОННЫЙ МЕТОД

Введем определения, необходимые для описания мозаично-скелетонного метода [16]. Пусть ${{A}_{k}}$ – блок матрицы ${{A}^{{n \times m}}}$, а $\Pi ({{A}_{k}})$ – матрица размера $n \times m$, полученная из ${{A}_{k}}$ путем дополнения до $A$ нулями.

Определение 1. Конечное множество блоков ${\text{\{ }}{{A}_{k}}{\text{\} }}$ будем называть покрытием $A$, если

$A = \sum\limits_k \Pi ({{A}_{k}}),$
и мозаичным разбиением $A$, если, дополнительно, $\bigcap\nolimits_k^{} {{{A}_{k}}} = \emptyset $.

Определение 2. Мозаичным рангом матрицы $A \in {{\mathbb{C}}^{{n \times m}}}$, соответствующим некоторому покрытию, называется число

(13)
$\operatorname{mr} A = \sum\limits_k {\operatorname{mem} {{A}_{k}}{\text{/}}(n + m),} $
где сумма берется по всем блокам покрытия ${{A}_{k}} \in {{\mathbb{C}}^{{{{n}_{k}} \times {{m}_{k}}}}}$, и $\operatorname{mem} {{A}_{k}} = {\text{min\{ }}{{n}_{k}}{{m}_{k}},({{n}_{k}} + {{m}_{k}})\operatorname{rank} {{A}_{k}}{\text{\} }}$.

Мозаичный ранг определяет затраты памяти на хранение мозаичного разбиения матрицы $A$, а также вычислительную сложность матрично-векторного умножения.

Важным показателем эффективности данного метода является фактор сжатия $I$ [16]. Он определяется следующей формулой:

(14)
$I = \frac{{\operatorname{mem} {{A}_{p}}}}{{\operatorname{mem} A}}100,$
где $\operatorname{mem} {{A}_{p}}$ – объем памяти, необходимый для хранения матрицы в малоранговом формате, $\operatorname{mem} A$ – объем памяти для хранения исходной матрицы.

Определение 3. Будем называть скелетоном матрицу вида $u{v}{\kern 1pt} {\text{*}}$, где $u$ и ${v}$ – вектор-столбцы, ${v}{\kern 1pt} {\text{*}}$ обозначает вектор-строку, эрмитово-сопряженную к вектору ${v}$.

Из определения 3 следует, что $\operatorname{rank} (u{v}{\kern 1pt} *) = 1$.

Мозаично-скелетонный метод состоит из трех этапов: построение дерева кластеров, создание списка блоков и нахождение малоранговой аппроксимации. Для первого этапа входными данными является сетка, на которой проведена дискретизация. Совокупность всех точек сетки называется кластером нулевого уровня (или корнем дерева). На каждом шаге исходный кластер разбивается на несколько непересекающихся подкластеров. Так продолжается, пока уровень дерева не достигнет заданного. В качестве кластера нулевого уровня можно взять куб и погрузить туда область, на границе которой строится сетка. При переходе к следующему уровню дерева каждое ребро текущего кластера делится пополам, в результате чего получается 8 подкубов. Тогда все точки, принадлежащие исходному кубу, распределятся по 8 подкубам, образовав 8 подкластеров (возможно, некоторые из них будут пустыми). При достижении максимального уровня $k$, количество кластеров станет равным ${{8}^{k}}$.

Следующий этап – создание списка блоков. Два любых кластера определяют блок в матрице. Если точки кластеров геометрически удалены друг от друга, то блок попадает в “дальнюю” зону и для него будет построено приближение, а иначе – в “ближнюю”, тогда элементы блоков будут вычисляться по формулам (11).

На последнем этапе блоки “дальней” зоны приближаются матрицами малого ранга. Такие матрицы можно искать разными способами [17], [18]. В настоящей работе для этого используется алгоритм неполной крестовой аппроксимации, он является заключительным этапом мозаично-скелетонного метода [20].

Алгоритм

Приближение матрицы $A$ размера $n \times m$ матрицей ${{A}^{{(r)}}}$, являющейся суммой $r$ скелетонов.

Шаг 1. Пусть $p$ – номер вычисляемого скелетона. На этом шаге полагаем $p = 1$ и выбираем произвольный номер ${{j}_{p}}$ столбца матрицы $A$.

Шаг 2. В столбце с номером ${{j}_{p}}$ вычисляем все элементы матрицы $A$, далее из них вычитаем элементы всех полученных ранее скелетонов в этих позициях. В полученном столбце ${{u}_{p}}$ находим максимальный по модулю элемент. Пусть он расположен в строке с номером ${{i}_{p}}$.

Шаг 3. Вычисляем строку матрицы $A$ с номером ${{i}_{p}}$ и из нее также вычитаем элементы всех уже найденных скелетонов в соответствующих позициях. В полученной строке ${v}_{p}^{ * }$ находим наибольший по модулю элемент, причем элемент из столбца с номером ${{j}_{p}}$ повторно выбрать нельзя. Номер столбца, в котором находится этот максимальный элемент, обозначим через ${{j}_{{p + 1}}}$.

Шаг 4. По кресту с центром $({{i}_{p}},{{j}_{p}})$ строим скелетон так, чтобы коэффициенты матрицы

(15)
${{A}^{{(p)}}} = \sum\limits_{\alpha = 1}^p {\frac{{{{u}_{\alpha }}{v}_{\alpha }^{ * }}}{{{{A}_{{{{i}_{\alpha }}{{j}_{\alpha }}}}}}}} $
совпадали с коэффициентами исходной матрицы на позициях $p$ вычисленных столбцов ${{j}_{1}},\; \ldots ,\;{{j}_{p}}$ и $p$ вычисленных строк ${{i}_{1}},\; \ldots ,\;{{i}_{p}}$.

Шаг 5. Проверяем критерий остановки. Если он выполняется, то вычисления прекращаются. Если не выполняется, то устанавливаем $p: = p + 1$ и повторяем алгоритм с шага 2.

Аппроксимация (15) считается достаточно точной, если выполняется неравенство (критерий остановки)

${{\left\| {A - {{A}^{{(p)}}}} \right\|}_{F}} \leqslant \varepsilon {{\left\| {{{A}^{{(p)}}}} \right\|}_{F}},$
где $\varepsilon $ – относительная погрешность аппроксимации, ${{\left\| {\, \cdot \,} \right\|}_{F}}$ – норма Фробениуса [21].

Для проверки этого критерия нужно вычислить $nm$ элементов матрицы $A$, что слишком трудоемко. Объем вычислений можно сократить, используя оценку сверху величины ${{\left\| {A - {{A}^{{(p)}}}} \right\|}_{F}}$, полученную в [20],

${{\left\| {A - {{A}^{{(p)}}}} \right\|}_{F}} \leqslant (l - p){{{{{\left\| {{{u}_{p}}{v}_{p}^{ * }} \right\|}}_{F}}} \mathord{\left/ {\vphantom {{{{{\left\| {{{u}_{p}}{v}_{p}^{ * }} \right\|}}_{F}}} {\left| {{{A}_{{{{i}_{p}}{{j}_{p}}}}}} \right|}}} \right. \kern-0em} {\left| {{{A}_{{{{i}_{p}}{{j}_{p}}}}}} \right|}} = (l - p){{\left\| {{{u}_{p}}} \right\|}_{F}}{{{{{\left\| {{{{v}}_{p}}} \right\|}}_{F}}} \mathord{\left/ {\vphantom {{{{{\left\| {{{{v}}_{p}}} \right\|}}_{F}}} {\left| {{{A}_{{{{i}_{p}}{{j}_{p}}}}}} \right|}}} \right. \kern-0em} {\left| {{{A}_{{{{i}_{p}}{{j}_{p}}}}}} \right|}},\quad {\text{где}}\quad l = min(n,m).$
При этом критерий остановки принимает вид

(16)
$(l - p){{\left\| {{{u}_{p}}} \right\|}_{F}}{{{{{\left\| {{{{v}}_{p}}} \right\|}}_{F}}} \mathord{\left/ {\vphantom {{{{{\left\| {{{{v}}_{p}}} \right\|}}_{F}}} {\left| {{{A}_{{{{i}_{p}}{{j}_{p}}}}}} \right|}}} \right. \kern-0em} {\left| {{{A}_{{{{i}_{p}}{{j}_{p}}}}}} \right|}} \leqslant \varepsilon {{\left\| {{{A}^{{(p)}}}} \right\|}_{F}}.$

Норму матрицы ${{A}^{{(p)}}}$ будем вычислять по рекуррентной формуле. Для ее вывода воспользуемся определением нормы Фробениуса $\left\| A \right\|_{F}^{2} = \operatorname{Tr} (A{\text{*}}A)$, где $A{\text{*}}$ – матрица, эрмитово-сопряженная к матрице $A$, $\operatorname{Tr} (A) = \sum\nolimits_{i = 1}^l {{{A}_{{ii}}}} $ – след матрицы $A$ [21]. Используя формулу (15), линейность следа и его инвариантность относительно циклической перестановки матриц [21], имеем

(17)
$\left\| {{{A}^{{(p)}}}} \right\|_{F}^{2} = {\text{Tr}}\left( {\sum\limits_{\alpha ,\beta = 1}^p {\frac{{({{{v}}_{\beta }}u_{\beta }^{ * })({{u}_{\alpha }}{v}_{\alpha }^{ * })}}{{{{A}_{{{{i}_{\alpha }}{{j}_{\alpha }}}}}A_{{{{i}_{\beta }}{{j}_{\beta }}}}^{ * }}}} } \right) = \sum\limits_{\alpha ,\beta = 1}^p {{\text{Tr}}} \left( {\frac{{({{{v}}_{\beta }}u_{\beta }^{ * })({{u}_{\alpha }}{v}_{\alpha }^{ * })}}{{{{A}_{{{{i}_{\alpha }}{{j}_{\alpha }}}}}A_{{{{i}_{\beta }}{{j}_{\beta }}}}^{ * }}}} \right) = \sum\limits_{\alpha ,\beta = 1}^p {\frac{{(u_{\beta }^{ * }{{u}_{\alpha }})({v}_{\alpha }^{ * }{{{v}}_{\beta }})}}{{{{A}_{{{{i}_{\alpha }}{{j}_{\alpha }}}}}A_{{{{i}_{\beta }}{{j}_{\beta }}}}^{ * }}}} .$

Последнее выражение можно переписать в виде

(18)
$\left\| {{{A}^{{(p)}}}} \right\|_{F}^{2} = \left\| {{{A}^{{(p - 1)}}}} \right\|_{F}^{2} + 2{\text{Re}}\left( {\sum\limits_{\alpha = 1}^{p - 1} {\frac{{(u_{p}^{ * }{{u}_{\alpha }})({v}_{\alpha }^{ * }{{{v}}_{p}})}}{{{{A}_{{{{i}_{\alpha }}{{j}_{\alpha }}}}}A_{{{{i}_{p}}{{j}_{p}}}}^{ * }}}} } \right) + \frac{{\left\| {{{u}_{p}}} \right\|_{F}^{2}\left\| {{{{v}}_{p}}} \right\|_{F}^{2}}}{{{{{\left| {{{A}_{{{{i}_{p}}{{j}_{p}}}}}} \right|}}^{2}}}},\quad {{\left\| {{{A}^{{(1)}}}} \right\|}_{F}} = \frac{{{{{\left\| {{{u}_{1}}} \right\|}}_{F}}{{{\left\| {{{{v}}_{1}}} \right\|}}_{F}}}}{{\left| {{{A}_{{{{i}_{1}}{{j}_{1}}}}}} \right|}},\quad p \geqslant 2.$

При использовании рекуррентной формулы (18) на $p$-м шаге требуется выполнить $O(p(m + n))$ операций умножения. Если в правой части (17) воспользоваться оценкой сверху для скалярных произведений, можно получить более предпочтительную с вычислительной точки зрения формулу

(19)
${{\left\| {{{A}^{{(p)}}}} \right\|}_{F}} \leqslant {{\left\| {{{A}^{{(p - 1)}}}} \right\|}_{F}} + \frac{{{{{\left\| {{{u}_{p}}} \right\|}}_{F}}{{{\left\| {{{{v}}_{p}}} \right\|}}_{F}}}}{{\left| {{{A}_{{{{i}_{p}}{{j}_{p}}}}}} \right|}} \leqslant \sum\limits_{\alpha = 1}^p {\frac{{{{{\left\| {{{u}_{\alpha }}} \right\|}}_{F}}{{{\left\| {{{{v}}_{\alpha }}} \right\|}}_{F}}}}{{\left| {{{A}_{{{{i}_{\alpha }}{{j}_{\alpha }}}}}} \right|}}.} $
Она требует всего $O(m + n)$ операций на каждом шаге, однако при ее использовании критерий остановки становится не вполне корректным, так как в правую часть неравенства (16) вместо нормы ${{\left\| {{{A}^{{(p)}}}} \right\|}_{F}}$ подставляется ее оценка сверху. Вычислительные эксперименты, проведенные в широком диапазоне волновых чисел, показали, что использование формулы (19) не слишком ухудшает оценку точности малоранговой аппроксимации по сравнению с формулой (18), но позволяет уменьшить затраты времени на работу быстрого метода.

4. РЕЗУЛЬТАТЫ ЧИСЛЕННЫХ ЭКСПЕРИМЕНТОВ

Для выполнения расчетов были использованы вычислительные ресурсы ЦКП “Центр данных ДВО РАН” [22]. Программа для численного решения задач дифракции написана на языке Фортран 90 и представляет собой консольное приложение, предназначенное для работы на многопроцессорных вычислительных системах. В качестве компилятора выступает Intel Fortran Compiler, также используются библиотека Intel Math Kernel Library (Intel MKL) и реализация стандарта OpenMP для данного компилятора.

Программное обеспечение состоит из 21 модуля, три из которых реализуют этапы мозаично-скелетонного метода. Распараллеливанию подвергались наиболее трудоемкие части программы – алгоритмы построения малоранговой аппроксимации в мозаично-скелетонном методе и матрично-векторного умножения в GMRES. В [20] даны рекомендации по реализации метода для платформ с распределенной памятью. В данной работе при помощи технологии OpenMP был реализован параллельный вариант для систем с общей памятью. В таком случае нет необходимости пересылать большие объемы данных между OpenMP потоками.

Сначала каждый поток получает блок и в зависимости от его зоны либо строит для него малоранговое приближение, либо вычисляет все элементы блока. Далее на этапе матрично-векторного умножения поток получает блоки и умножает их на соответствующие части вектора. Если блок принадлежит “ближней” зоне, для его умножения поток использует функцию из Intel MKL. Если блок находится в “дальней” зоне, то он умножается на вектор с использованием специальной функции, учитывающей специфику хранения таких блоков. Данная функция позволяет умножать блоки “дальней” зоны на вектор за почти линейное число операций. Блоки распределяются по потокам динамически. На начальном этапе поток получает только один блок. Закончив с ним работу, он получает из стека следующий блок. Такой подход позволяет потокам заканчивать работу почти одновременно. По окончании параллельной секции происходит неявная синхронизация OpenMP потоков.

Пример 1. Рассматривается задача дифракции плоской акустической волны на единичном шаре с центром в начале координат и тремя различными наборами параметров вмещающей среды и включения. Комплексная амплитуда исходного волнового поля давлений имеет вид ${{u}_{0}}(x) = exp(i{{k}_{e}}{{x}_{3}})$, ${{f}_{0}} = u_{0}^{ + }$, ${{f}_{1}} = {{N}^{ + }}{{u}_{0}}$, параметры сред: I) ${{k}_{i}} = 8$, ${{\rho }_{i}} = 3$, ${{k}_{e}} = 5.5$, ${{\rho }_{e}} = 1$; II) ${{k}_{i}} = 15.5$, ${{\rho }_{i}} = 5$, ${{k}_{e}} = 9$, ${{\rho }_{e}} = 4$; III) ${{k}_{i}} = 21$, ${{\rho }_{i}} = 7$, ${{k}_{e}} = 30.5$, ${{\rho }_{e}} = 9.5$.

Во всех примерах задача дифракции решалась дважды: с использованием мозаично-скелетонного метода в GMRES и без него. При этом дискретизация уравнения (6) осуществлялась по формулам (11) и (12), порядок матрицы $M$ варьировался от 1000 до 64 000. Здесь и далее точность GMRES составляла ${{10}^{{ - 7}}}$, а точность малоранговой аппроксимации $\varepsilon $ равнялась ${{10}^{{ - 5}}}$. Уровень дерева кластеров менялся от 4 до 6. Далее на всех рисунках квадратами обозначается первый набор параметров сред, кругами – второй набор и треугольниками – третий набор.

В примере 1 правильность предлагаемого подхода проверялась путем сравнения приближенных решений задачи дифракции с известным аналитическим решением [23]. Последнее рассчитывалось по формулам

${{u}_{e}}(r,\theta ) = \sum\limits_{m = 0}^\infty {\frac{{(2m + 1){{i}^{m}}{{a}_{m}}}}{{{{b}_{m}}}}{{h}_{m}}({{k}_{e}}r){{P}_{m}}(cos\theta )} ,\quad r \geqslant 1,$
${{u}_{i}}(r,\theta ) = \sum\limits_{m = 0}^\infty {\frac{{(2m + 1){{i}^{{m + 1}}}{{p}_{e}}}}{{{{k}_{e}}{{b}_{m}}}}} {{j}_{m}}({{k}_{i}}r){{P}_{m}}(cos\theta ),\quad r \leqslant 1.$
Здесь $r = \left| x \right|$, $cos\theta = {{x}_{3}}{\text{/}}r$,
${{a}_{m}} = \mathop {\left. {({{p}_{i}}{{j}_{m}}({{k}_{e}}r)j_{m}^{'}({{k}_{i}}r) - {{p}_{e}}{{j}_{m}}({{k}_{i}}r)j_{m}^{'}({{k}_{e}}r))} \right|}\nolimits_{r = 1} ,$
${{b}_{m}} = \mathop {\left. {({{p}_{e}}{{j}_{m}}({{k}_{i}}r)h_{m}^{'}({{k}_{e}}r) - {{p}_{i}}{{h}_{m}}({{k}_{e}}r)j_{m}^{'}({{k}_{i}}r))} \right|}\nolimits_{r = 1} ,$
${{j}_{m}}(kr) = \sqrt {\frac{\pi }{{2kr}}} {{J}_{{m + 1/2}}}(kr),\quad {{h}_{m}}(kr) = \sqrt {\frac{\pi }{{2kr}}} H_{{m + 1/2}}^{{\left( 1 \right)}}(kr),$
${{J}_{{m + 1/2}}}$, $H_{{m + 1/2}}^{{(1)}}$ – функции Бесселя и функции Ханкеля I рода $(m + 1{\text{/}}2)$-го порядка соответственно, ${{P}_{m}}$ – полиномы Лежандра $m$-го порядка.

Кроме того, решения интегрального уравнения (6), найденные приближенно, сравнивались с аналитическим решением, имеющим вид

$q = - \sum\limits_{m = 0}^\infty {\frac{{(2m + 1){{i}^{{m + 1}}}{{a}_{m}}}}{{{{k}_{e}}{{b}_{m}}}}\frac{{{{P}_{m}}(cos\theta )}}{{{{j}_{m}}({{k}_{e}})}}.} $
Погрешности этих решений вычислялись в норме пространства сеточных функций [12]
(20)
$\mathop {\left\| {{{q}^{h}}} \right\|}\nolimits_{H_{h}^{{ - 1/2}}(\Gamma )}^2 = \sum\limits_{m,n = 1}^M {{{A}_{{mn}}}} {{q}_{m}}q_{n}^{ * },$
где $q_{n}^{ * }$ – комплексно сопряженное к ${{q}_{n}}$ число,

${{A}_{{mn}}} = \frac{{{{{\bar {\varphi }}}_{m}}{{{\bar {\varphi }}}_{n}}}}{{2{{\pi }^{{3/2}}}{{r}_{{mn}}}}}\int\limits_0^{{{\gamma }_{{mn}}}} {exp} ( - {{t}^{2}})dt,\quad m \ne n,\quad {{A}_{{mm}}} = \frac{{\bar {\varphi }_{m}^{2}}}{{2{{\pi }^{{3/2}}}{{\sigma }_{{mm}}}}} + \frac{{{{\sigma }_{{mm}}}{{{\bar {\varphi }}}_{m}}}}{{2{{\pi }^{{1/2}}}}}.$

На фиг. 1 представлены относительные погрешности решений интегрального уравнения (6) в зависимости от числа узловых точек $M$ для задачи из примера 1. При удвоении $M$ погрешности уменьшаются в два раза, значит, метод имеет второй порядок точности относительно ${{h}^{2}} \sim {{M}^{{ - 1}}}$. Относительные погрешности решений задачи из примера 1 приведены на фиг. 2. Здесь и в последующих примерах они посчитаны в норме пространств сеточных функций $H_{h}^{0}({{\Omega }_{{i(e)}}})$. Сплошными линиями обозначены погрешности ${{u}_{i}}$, а штриховыми линиями – погрешности ${{u}_{e}}$. В данном случае метод также имеет второй порядок точности.

Фиг. 1.

Погрешности решения интегрального уравнения (6) из примера 1.

Фиг. 2.

Погрешности решений ${{u}_{i}}$ (сплошная линия) и ${{u}_{e}}$ (штриховая линия) из примера 1.

Рассмотрим теперь фиг. 3, где приведены затраты времени на решение СЛАУ, аппроксимирующих уравнение (6), в зависимости от количества точек дискретизации $M$. Штриховые линии изображают время решения СЛАУ с использованием мозаично-скелетонного метода в GMRES, а сплошные линии – время решения без применения быстрого метода. Здесь и далее время $t$ представлено в секундах. Эксперименты показали, что сложность GMRES с использованием мозаично-скелетонного метода при удвоении количества точек дискретизации возрастает в среднем в 2.4 раза, т.е. почти линейно. При этом вычислительная сложность GMRES без использования быстрого метода имеет оценку $O({{M}^{2}})$. Таким образом, использование быстрого метода приводит к существенному уменьшению времени решения задачи (до 70 раз при $M = 63\,886$ для первого набора параметров).

Фиг. 3.

Время решения СЛАУ из примера 1 с использованием мозаично-скелетонного метода (штриховая линия) и без его использования (сплошная линия).

В табл. 1 и 2 приведены значения мозаичного ранга и фактора сжатия для СЛАУ, аппроксимирующих интегральное уравнение (6), в зависимости от количества узловых точек. Мозаичный ранг рассчитывался по формуле (13), а фактор сжатия – по формуле (14). Численные эксперименты показывают, что мозаичный ранг растет как $O(l{{n}^{3}}(M))$, а фактор сжатия, начиная с некоторого $M$, уменьшается как $O(l{{n}^{3}}(M){\text{/}}M)$.

Таблица 1.  

Мозаичный ранг для задачи из примера 1

k\M 998 2042 3998 8150 15 974 32 598 63 886
I 1996 3546.6 4564.3 5533.0 6579.6 7812.3 9215.6
II 1996 3922.4 5227.6 6362.6 7532.8 8848.2 10 304.1
III 1996 4084 6467.6 8089.4 9513.6 11 049.5 12 677.0
Таблица 2.  

Фактор сжатия для задачи из примера 1

k\M 998 2042 3998 8150 15 974 32 598 63 886
I 100 86.8 57.1 33.9 20.6 12.0 7.2
II 100 96.0 65.4 39.0 23.6 13.6 8.1
III 100 100 80.9 49.6 29.8 16.9 9.9

В табл. 3 приведено число итераций для решения СЛАУ из примера 1 с указанной выше точностью. Видно, что количество итераций мало по сравнению с порядком СЛАУ и слабо изменяется с его увеличением.

Таблица 3.  

Число итераций для задачи из примера 1

k\M 998 2042 3998 8150 15 974 32 598 63 886
I 26 26 27 29 29 30 30
II 57 48 47 48 47 48 49
III 343 235 153 110 103 96 97

На фиг. 4 представлены затраты времени на решение СЛАУ, аппроксимирующих уравнение (6), в зависимости от количества ядер вычислительного кластера. При удвоении количества ядер время уменьшается в среднем в 1.8 раза.

Фиг. 4.

Время решения СЛАУ из примера 1 при распараллеливании. Порядок СЛАУ – 32 598 (сплошная линия) и 63 886 (штриховая линия).

Пример 2. Рассматривается задача дифракции плоской акустической волны на трехосном эллипсоиде с полуосями (0.75, 1, 0.5) с центром в начале координат. Комплексная амплитуда исходного волнового поля давлений и наборы параметров такие же, как в примере 1.

Аналитическое решение задачи из примера 2 неизвестно. Поэтому проверялась сходимость последовательности ее приближенных решений к решению, посчитанному на наиболее густой сетке. Относительные погрешности решения задачи из примера 2 приведены на фиг. 5. Сплошные линии показывают погрешности ${{u}_{i}}$, а штриховые линии – погрешности ${{u}_{e}}$. Видно, что при удвоении порядка матриц погрешности уменьшаются в два раза.

Фиг. 5.

Погрешности решений ${{u}_{i}}$ (сплошная линия) и ${{u}_{e}}$ (штриховая линия) из примера 2.

Затраты времени на решение СЛАУ в зависимости от порядка матриц $M$ с использованием мозаично-скелетонного метода и без него приведены на фиг. 6. Сплошные линии показывают время решения СЛАУ с использованием мозаично-скелетонного метода, а штриховые линии обозначают время решения систем без его использования. При использовании мозаично-скелетонного метода в GMRES время решения системы в 115 раз меньше (при $M = 64\,139$ для третьего набора параметров для уравнения (6)), чем без применения быстрого метода. При удвоении количества узловых точек время решения СЛАУ с использованием мозаично-скелетонного метода возрастает в среднем в 2.5 раза.

Фиг. 6.

Время решения СЛАУ из примера 2 с использованием мозаично-скелетонного метода (штриховая линия) и без его использования (сплошная линия).

Результаты работы параллельной версии метода для решения задачи из примера 2 приведены на фиг. 7. При удвоении количества ядер время в среднем уменьшается в 1.7 раза.

Фиг. 7.

Время решения СЛАУ из примера 2 при распараллеливании в зависимости от количества ядер. Порядок СЛАУ – 32 120 (сплошная линия) и 64 139 (штриховая линия).

Значения мозаичного ранга и фактора сжатия для задачи дифракции из примера 2, эквивалентной уравнению (6), приведены в табл. 4 и 5 соответственно. Как и в предыдущем примере мозаичный ранг растет как $O(l{{n}^{3}}(M))$, а фактор сжатия, начиная с некоторого $M$, уменьшается как $O(l{{n}^{3}}(M){\text{/}}M)$.

Таблица 4.  

Мозаичный ранг для задачи из примера 2

k\M 1032 2096 4010 8022 16 033 32 120 64 139
I 1972.3 3007.6 3964.0 4976.4 6068.6 7380.5 8964.0
II 2039.6 3273.9 4411.9 5507.2 6665.2 8017.8 9641.1
III 2064 3794.2 5311.6 6710.7 8046.3 9522.7 11 242.9
Таблица 5.  

Фактор сжатия для задачи из примера 2

k\M 1032 2096 4010 8022 16 033 32 120 64 139
I 95.6 71.7 49.4 31.0 18.9 11.5 7.0
II 98.8 78.1 55.0 34.3 20.8 12.5 7.5
III 100.0 90.5 66.2 41.8 25.1 14.8 8.8

Таблица 6 показывает число итераций для решения СЛАУ из примера 2 с помощью GMRES. И в этом случае количество итераций мало по сравнению с порядком СЛАУ и слабо изменяется с его увеличением.

Таблица 6.  

Число итераций для задачи из примера 2

k\M 1032 2096 4010 8022 16 033 32 120 64 139
I 39 42 39 42 46 50 53
II 88 87 69 71 74 78 81
III 428 373 363 367 373 385 398

Пример 3. Рассматривается задача дифракции на трехосном эллипсоиде с полуосями (0.75, 1, 0.5) с центром в начале координат. Падающее поле создается точечным источником вида

${{u}_{0}}(x) = exp\left( {ik\left| {x - {{x}_{0}}} \right|} \right){\text{/}}\left| {x - {{x}_{0}}} \right|,$
где ${{x}_{0}} = (1.125,\;1,\;0.75)$. Наборы параметров вмещающей среды и включения такие же, как в примере 1.

Относительные погрешности решений ${{u}_{i}}$ и ${{u}_{e}}$ для задачи из примера 3 приведены на фиг. 8 (сплошная линия – для ${{u}_{i}}$, штриховая линия – для ${{u}_{e}}$). При увеличении порядка матриц в два раза погрешности так же уменьшаются в два раза, как и в рассмотренных выше примерах.

Фиг. 8.

Погрешности решений ${{u}_{i}}$ (сплошная линия) и ${{u}_{e}}$ (штриховая линия) из примера 3.

Поскольку два последних примера отличаются только видом падающего поля, значения мозаичного ранга и фактора сжатия для соответствующих наборов параметров из примеров 2 и 3 совпадают.

Действительная и мнимая части решения ${{u}_{e}}$ из примера 3 на отрезке ${{x}_{1}} = - 2$, ${{x}_{2}} = - 2$, $ - 20 \leqslant {{x}_{3}} \leqslant 20$ изображены на фиг. 9 и 10 соответственно. Видно, что решение ${{u}_{e}}$ быстро осциллирует и медленно убывает при удалении от включения.

Фиг. 9.

Действительная часть решения задачи дифракции из примера 3 при ${{x}_{1}} = {{x}_{2}} = - 2$.

Фиг. 10.

Мнимая часть решения задачи дифракции из примера 3 при ${{x}_{1}} = {{x}_{2}} = - 2$.

ЗАКЛЮЧЕНИЕ

В работе рассмотрено применение параллельного варианта мозаично-скелетонного метода к численному решению трехмерной скалярной задачи дифракции. Она формулируется в виде граничного интегрального уравнения Фредгольма I рода с одной неизвестной функцией. Численные эксперименты показывают, что использование мозаично-скелетонного метода позволяет существенно уменьшить время решения СЛАУ, аппроксимирующих указанное интегральное уравнение, и снизить требования к ресурсам компьютера без потери точности. Поэтому данный метод можно рекомендовать к использованию при численном решении других задач математической физики, которые сводятся к граничным интегральным уравнениям.

Список литературы

  1. Дмитриев В.И., Захаров Е.В. Интегральные уравнения в краевых задачах электродинамики. М.: МГУ, 1987.

  2. Costabel M., Stephan E. A direct boundary integral equation method for transmission problems // J. Math. Anal. Appl. 1985. V. 106. 2. P. 367–413.

  3. Колтон Д., Кресс Р. Методы интегральных уравнений в теории рассеяния / Пер. с англ. М.: Мир, 1987.

  4. Цецохо В.А., Воронин В.В., Смагин С.И. О решении задач дифракции потенциалами простого слоя // ДАН СССР. 1988. Т. 302. № 2. С. 323–327.

  5. Kleinman R.E., Martin P.A. On single integral equations for the transmission problem of acoustics // SIAM J. Appl. Math. 1988. V. 48. № 2. P. 307–325.

  6. Смагин С.И. Численное решение трехмерных задач дифракции методом потенциалов: Дис. … доктора физ.-матем. наук. Новосибирск, 1991.

  7. Каширин А.А. Исследование и численное решение интегральных уравнений трехмерных стационарных задач дифракции акустических волн: Дис. … канд. физ.-матем. наук. Хабаровск, 2006.

  8. Каширин А.А., Смагин С.И. Обобщенные решения интегральных уравнений скалярной задачи дифракции // Дифференц. ур-ния. 2006. Т. 42. № 1. С. 79–90.

  9. Каширин А.А., Смагин С.И. О численном решении интегральных уравнений скалярной задачи дифракции // Докл. АН. 2014. Т. 458. № 2. С. 141–144.

  10. Каширин А.А., Смагин С.И. Численное решение интегральных уравнений трехмерных скалярных задач дифракции // Вычисл. технологии. 2018. Т. 23. № 2. С. 20–36.

  11. Смагин С.И. Численное решение интегрального уравнения I рода со слабой особенностью для плотности потенциала простого слоя // Ж. вычисл. матем. и матем. физ. 1988. Т. 28. № 11. С. 1663–1673.

  12. Каширин А.А., Смагин С.И. О численном решении задач Дирихле для уравнения Гельмгольца методом потенциалов //Ж. вычисл. матем. и матем. физ. 2012. Т. 52. № 8. С. 1492–1505.

  13. Каширин А.А., Смагин С.И., Талтыкина М.Ю. Применение мозаично-скелетонного метода при численном решении трехмерных задач Дирихле для уравнения Гельмгольца в интегральной форме // Ж. вычисл. матем. и матем. физ. 2016. Т. 56. № 4. С. 625–638.

  14. Каширин А.А., Талтыкина М.Ю. О существовании мозаично-скелетонных аппроксимаций дискретных аналогов интегральных операторов // Ж. вычисл. матем. и матем. физ. 2017. Т. 57. № 9. С. 1421–1432.

  15. Saad Y., Schultz M. GMRES: a generalized minimal residual algorithm for solving nonsymmetric linear systems // SIAM J. Sci. Stat. Comput. 1986. V. 7. № 3. P. 856–869.

  16. Тыртышников Е.Е. Методы быстрого умножения и решение уравнений // Матричные методы и вычисления. М.: ИВМ РАН, 1999. С. 4–41.

  17. Горейнов С.А. Мозаично-скелетонные аппроксимации матриц, порожденных асимптотически гладкими и осцилляционными ядрами // Матричные методы и вычисления. М.: ИВМ РАН, 1999. С. 42–76.

  18. Tyrtyshnikov E.E. Incomplete cross approximations in the mosaic-skeleton method // Computing. 2000. V. 64. № 4. P. 367–380.

  19. McLean W. Strongly elliptic systems and boundary integral equations. Cambridge: Cambridge Univ. Press, 2000.

  20. Савостьянов Д.В. Быстрая полилинейная аппроксимация матриц и интегральные уравнения: Дис. … канд. физ.-матем. наук. М., 2006.

  21. Meyer C.D. Matrix analysis and applied linear algebra. Philadelphia, PA: SIAM, 2000.

  22. Сорокин А.А., Макогонов С.В., Королев С.П. Информационная инфраструктура для коллективной работы ученых Дальнего Востока России // Научно-техническая информация. Серия 1: Организация и методика информационной работы. 2017. № 12. С. 14–16.

  23. Тихонов А.Н., Самарский А.А. Уравнения математической физики. М.: Изд-во МГУ им. М.В. Ломоносова, 1999.

Дополнительные материалы отсутствуют.

Инструменты

Журнал вычислительной математики и математической физики