многосеточный метод для решения PDE

15

Мне нужно простое объяснение многосеточного метода или некоторая литература по этому поводу.

Я знаком с итерационными методами, включая BiCGStab, CG, GS, Jacobi и предварительные условия, но я новичок в многосеточном методе.

Может кто-нибудь объяснить это подробно или хотя бы предоставить явно псевдокод или исходный код, даже с хорошей литературой для начинающих? Благодарность!

Нурлан
источник

Ответы:

15

Основная идея мультисетки - это проекция. Я пытаюсь думать об этом следующим образом:

Предположим, я хочу определить PDE с большой точностью, поэтому я продолжаю дискретизировать область (скажем, используя метод конечных разностей) на очень тонкой сетке с большим количеством точек. В конце концов, я настроил свою систему уравнений и готов ее решить. Я пытаюсь использовать мой любимый итеративный решатель (Якоби, Гаусса Зейделя, сопряженный градиент и т. Д.). Я продолжаю ждать больше суток и понимаю, что мой компьютер все еще пытается вычислить ответ !!!

Причина, по которой эти итерационные методы не работают быстро, заключается в том, что (как правило), когда вы устанавливаете большую систему уравнений, как эта, сама матрица имеет собственные значения, чрезвычайно близкие к 1. Почему это имеет значение? Потому что скорость сходимости многих итерационных методов обратно пропорциональна наибольшему собственному значению (см. Ссылку Кристиана Класона на слайды из учебника по многосетке Бригга, часть 1, страница 27). Таким образом, чем ближе наибольшее собственное значение к 1, тем медленнее итерационный метод. (Примечание: это немного упрощает вещи, но это помогает мотивировать потребность в многосетке).

Очевидно, что всегда быстрее решить проблему, если есть меньше неизвестных (то есть на грубой сетке с меньшим количеством точек сетки). Но что более важно, решение (или приближенное решение) на более грубой сетке является хорошей отправной точкой для решения задачи на более тонкой сетке. Это ключевая идея большинства (если не всех) многосеточных методов. Почему это так? Интуитивно, это имеет смысл, но есть математически строгий способ оправдать это.

Давайте посмотрим на режимы Фурье ошибки в итеративном методе (для аргументов, скажем, jacobi или gauss seidel), примененном к исходной задаче тонкой сетки. Мы увидим, что в течение первых нескольких итераций большая часть высокочастотных (сильно колебательных) ошибок устраняется! Это здорово, но есть низкочастотная (менее колебательная) ошибка, которая все еще остается и не исчезает быстро. Фактически, это ошибка низкой частоты, которая мешает стандартному итеративному методу быстро сходиться.

Когда мы решаем проблему на более грубой сетке (скажем, с помощью итеративного метода, такого как jacobi или gauss-seidel), мы, по существу, способны устранять ошибки с более низкой частотой гораздо быстрее (т.е. за меньшее количество итераций), чем на тонкой сетке . Итак, если мы решим проблему грубой сетки, у нас будет решение, чьи ошибки на низких частотах были значительно уменьшены. Таким образом, это было бы полезно в качестве отправной точки для итерационного метода на более мелкой сетке.

Несмотря на то, что существуют разные многосеточные методы, большинство из них работают по разным причинам:

  1. Начните с проблемы с мелкой сеткой
  2. Проект на грубую сетку (также известный как ограничение )
  3. Приближенное решение на грубой сетке (с использованием другого решателя)
  4. Спроектируйте решение для грубой сетки на более мелкую сетку (также известную как продолжение )
  5. Используя проекцию из 4. в качестве начального предположения, решите проблему точной сетки итерационным методом.

Для меня самая сложная часть многосеточного метода - это проекции между сетками. Уроки Briggs, предложенные @ChristianClason, решают эту тему намного лучше, чем я.

Пол
источник
Спасибо за подробный ответ! Теперь у меня есть некоторые базовые знания о методе multigrdi. Теперь у меня есть конкретный вопрос о процессах ограничения и продления. Я читал, что некоторые матрицы ограничений R и интерполяционные матрицы M и формулы, такие как A2 = RAI, используются для проекций между сетками. Но я не понял, как построить матрицы R и I .. Есть ли какие-либо идеи по этому поводу?
Нурлан
Посмотрите на слайды 45-57 учебника по многосетке Бриггса (часть 1), который опубликовал ChristianClason. Там Бриггс описывает процесс для геометрического многосеточного метода. Это самое простое объяснение, которое я могу найти. Если у вас есть дополнительные вопросы по этому поводу, не стесняйтесь отправить новый вопрос! :)
Павел
15

Этот сайт, возможно, не является хорошим местом для подробного объяснения с помощью псевдокода (как указано в FAQ : «Если вы можете представить целую книгу, которая отвечает на ваш вопрос, вы спрашиваете слишком много»), так что вы можете захотеть начать с одной из классических книг по этой теме (перечисленных ниже) и вернуться к конкретным вопросам о конкретных деталях, с которыми у вас возникли проблемы.

Кристиан Клэйсон
источник
2
Бриггс действительно хорош!
vanCompute
5

Еще одна классика:

  • Wesseling, Введение в многосеточные методы, John Wiley & Sons, 1992.

Примеры кодов можно найти на MGNet

Крис
источник