Псевдоспектральный метод Фурье и численная диссипация


9

Выполнение прямого численного моделирования изотропной турбулентности с использованием псевдоспектрального метода Фурье (Orzag & Patterson, PRL, 1972) с использованием БПФ. Для ознакомления с методом, который широко используется в сообществе турбулентности, вы можете посмотреть этот курс: http://www.math.ualberta.ca/~bowman/m655/lab3d.pdf

Используя так называемый 2/3 правила заключения сделок, которые состоят из

U^(К,T)знак равно0              яе   К>23КMAИкс
где T это время, К волновое число, КMAИкс максимальное волновое число и U^ спектральная амплитуда скорости.

Является ли сглаживание численной диссипацией? Другими словами, есть ли утечка энергии из-за сделки?


Непонятно, о чем ваш вопрос. Не могли бы вы уточнить?
Джефф Оксберри

а сейчас?
Ucsky

Ответы:


6

Сглаживание свертки не действует как численное рассеяние. На самом деле энергия сохраняется только в том случае, если вы исключите псевдонимы.

Идея, стоящая за обработкой сверток на основе FFT, состоит в том, чтобы избавиться от дополнительных терминов, добавляемых FFT. Свертка - это просто сумма, и вы можете вычислить ее, просто вычислив сумму. Однако это действительно медленно, поэтому лучше преобразовать входы Фурье и умножить результат, а затем инвертировать преобразование Фурье, которое, по теореме свертки, является тем же, что и свертка.

Но теорема о свертке работает только тогда, когда входы имеют бесконечную длину; для входов конечной длины отображаются дополнительные термины (псевдонимы), которые не являются физическими. Суть сделки заключается в том, чтобы вернуть исходное уравнение, которое вы пытались вычислить, и в то же время позволить вам использовать БПФ для ускорения вычислений.


Малкольм не упомянул библиотеку FFTW ++, которую он в соавторстве, но она помогает вам быстро выполнять сверты с искажением путем неявной обработки заполнения (среди прочего). Смотрите fftwpp.sourceforge.net .
Мэтью Эммет

О да, спасибо, Мэтт! Процедуры свертки в FFTW ++ действительно снижают стоимость вычисления извилистых сверток. Существует ссылка на страницу sourceforge и многое другое на моей веб-странице. Я работал над этим с Джоном Боуманом, чья трехмерная лаборатория турбулентности связана с ОП.
Малкольм

4

Понимание того, что делает сделка, требует понимания того, почему вы берете БПФ в первую очередь. Для меня метод взвешенных невязок обеспечивает простейшую структуру:

  1. Вы расширяете решение как сумму мод Фурье и помещаете его в уравнения Навье - Стокса. Ваши тестовые функции также являются основой Фурье.
  2. Когда вы умножаете пробные и тестовые функции вместе и берете внутренний продукт (т.е. интегрируете с соответствующим сопряжением), вы увидите, что у вас есть один интеграл, который вы не можете просто оценить, потому что он нелинейный.
  3. Вы можете аппроксимировать этот интеграл, используя единую квадратурную схему, где вы просто суммируете значение в единичных точках коллокации.
  4. Обратите внимание, что ваша квадратура является точной для квадратичной нелинейности, если вы используете в 1,5 раза больше квадратурных точек, чем у вас было мод Фурье. Это фактор трех половин.
  5. Наконец, обратите внимание, квадратура может быть эффективно вычислена как БПФ.

Всю магию БПФ можно представить как эффективную приближенную квадратурную схему, которая может быть сделана точной для квадратичных нелинейностей. Другие варианты сглаживания играют другие хитрости, чтобы сделать квадратуру точной для того же класса нелинейностей.

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


1

@Malcolm дал экспертное объяснение сглаживания сверточных сумм на основе БПФ. Однако моя интуиция подсказывает мне, что это еще не полный ответ, необходимый для аббревиатуры, поэтому я дам еще несколько предложений, отражающих мою собственную борьбу за понимание численных методов.

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

Как взрывается твоя симуляция?

Существует нефизический перенос энергии от высоких волновых чисел к низким, который сначала вызывает нестабильность (часто сопровождаемую симптомом - волны 2h, расстояние до узла h-сетки, самые маленькие волны, которые могут быть представлены на сетке).

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

Первое средство (Philips, 1959): отфильтруйте или сделайте равной нулю верхнюю половину представленного спектра волнового числа.

Второе лекарство (Orszag, 1971): лекарство, известное как правило двух третей Орзага. Стивен сказал, что «отфильтровывать половину волновых чисел - пустая трата времени, мы должны оставить 2 / 3N и отфильтровать только верхнюю 1 / 3N».

Вывод.

Наши симуляции иногда имеют тенденцию взрываться. Если вы живете во втором порядке, вселенной с конечным объемом (как это сделал автор этих строк) и ничего не знаете о спектральных методах, они скажут вам: «О, ваша симуляция взрывается? Попробуйте использовать ветер первого порядка вместо центральной схемы или смесь» ваша центральная схема с 10% против ветра в подходе отложенной коррекции. Это добавит диссипации, но предотвратит взрыв вашего моделирования! Центральная схема и Смагоринский будут моделировать физическую диссипацию, которая происходит в самых низких масштабах ". Если вы живете во вселенной Spectral Methods, вы узнаете, как происходит нефизическая передача энергии, и вы найдете лекарство от сглаживания по правилу двух третей или «заполнению».

Мое вдохновение для этого поста - замечательная книга Дж. Бойда "Спектральные методы Чебышева и Фурье", раздел 11.

Мой совет:

Действуй физически или спектрально, но думай спектрально! (Перефразируя известное «Думай глобально, действуй локально».)


1

Не существует утечки энергии, связанной с «сглаживанием» как таковой, но есть утечка энергии, связанная с усечением, которое всегда выполняется с или без сглаживания. Позволь мне объяснить:

если у вас есть две функции f и g , каждая из которых имеет спектральное содержание вплоть до режима k , произведение fg будет иметь спектральное содержание до режима 2k . Однако вы не хотите, чтобы спектральное содержание вашего представления удваивалось на каждом временном шаге. Следовательно, вы хотите урезать произведение fg до первых k режимов. Делая это, вы теряете энергию, содержащуюся в модах выше, чем k .

Сглаживание (или сглаживание) гарантирует, что моды до k корректны в представлении fg , но не моды больше k , потому что в любом случае они будут отброшены.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.