Коротка відповідь: це вимагає конкретної роботи для різних рівнянь, але є деякі загальні методи, які підказують, як це зробити. По суті, задано PDE еволюції першого порядку
ут= A u + B u
де - деякі (можливо, диференціальні) оператори, стаціонарні стани - це ті, для якихА , В
A u + B u = 0.
Зазвичай використовується підхід розщеплення, в якому і по-різному дискретизуються. Тоді виникнуть помилки усікання, пов'язані з кожною з цих дискрецій, і помилки усічення, як правило, не скасовуються навіть у стаціонарному стані. Класичний приклад (як згадується у запитанні) - це рівняння мілководдя з батиметрією, в яких являє собою конвективні доданки, а - форсування імпульсу через змінну висоту дна. За останні кілька років було опубліковано багато робіт, які дають різні способи точно підтримувати стабільні рішення.Б А ВABAB
Один із підходів, який мені подобається, - це використання фрезерних рішень Рімана , запропонованих Bale et. ін. . Ідея полягає в тому, щоб розрізнити конвективні терміни методом Годунова, але відняти внесок від інших термінів всередині рімана Рімана. Тоді у стаціонарному стані хвилі не утворюються. Однак для цього потрібно точно розраховувати конвективні та вихідні умови (щоб точно скасувати). Це можливо для рівнянь мілководдя, але складніше для багатьох інших систем.