Я не очень знаком с общими схемами дискретизации для PDE. Я знаю, что Кранк-Николсон является популярной схемой для дискретизации уравнения диффузии. Это также хороший выбор для адвекции?
Я заинтересован в решении уравнения реакции-диффузии-адвекции ,
где - коэффициент диффузии вещества а - скорость.
Для моего конкретного приложения уравнение может быть записано в виде,
Вот схема Кранка-Николсона, которую я применил,
Обратите внимание на термины и . Это позволяет схеме перемещаться между:
- Crank-Niscolson,
- полностью неявно
- полностью явно
Значения могут быть разными, что позволяет диффузионному члену быть Crank-Nicolson, а адвекционным термином - что-то еще. Какой самый стабильный подход, что бы вы порекомендовали?
источник
Вообще говоря, вы захотите использовать неявный метод для параболических уравнений (диффузионная часть) - явные схемы для параболических уравнений в частных производных должны иметь очень короткий временной шаг, чтобы быть стабильным. И наоборот, для гиперболической части (адвекции) вам понадобится явный метод, так как он дешевле и не нарушает симметрию линейной системы, которую вы должны решить, используя неявную схему для диффузии. В этом случае вы хотите избежать центрированных различий, таких как и переключиться на односторонние различия по соображениям стабильности.(uj+1−uj−1)/2Δt (uj−uj−1)/Δt
Я бы посоветовал вам взглянуть на книгу Рэнди Левека или книгу Дейла Даррана « Анализ устойчивости фон Неймана». Это общий подход к установлению стабильности вашей схемы дискретизации, если у вас есть периодические граничные условия. (Там также хорошая вики статья здесь .)
Основная идея состоит в том, чтобы предположить, что в вашем дискретном приближении можно записать сумму плоских волн , где - волновое число, а - частота. Вы вбиваете плоскую волну в свое приближение к PDE и молитесь, чтобы она не взорвалась. Мы можем переписать плоскую волну как и мы хотим убедиться, что .ei(kjΔx−ωnΔt) k ω ξneikjΔx |ξ|≤1
В качестве иллюстрации рассмотрим обыкновенное уравнение диффузии с полностью неявным дифференцированием:
Если подставить в плоскую волну, а затем разделить на и , мы получим уравнениеξn eikjΔx
Очистите это немного сейчас, и мы получим:
Это всегда меньше единицы, так что вы в чистоте. Попробуйте применить это для явной центрированной схемы для уравнения адвекции:
и посмотреть , что вы получите. (На этот раз у него будет мнимая часть.) Вы обнаружите, что , что печально. Отсюда мое предупреждение, что вы не используете его. Если вы можете сделать это, то у вас не должно быть особых проблем с поиском стабильной схемы для полного уравнения адвекции-диффузии.ξ |ξ|2>1
Тем не менее, я бы использовал полностью неявную схему для диффузионной части. Измените разность в адвективной части на если и если и выберите временной шаг так, чтобы , (Это условие Куранта-Фридрихса-Леви .) Оно является точным только для первого порядка, поэтому вы можете посмотреть схемы дискретизации более высокого порядка, если это вас касается.uj−uj−1 v>0 uj−uj+1 v<0 VΔt/Δx≤1
источник