Вы смотрите на уравнение сохранения массы:
dmdt=0
При рассмотрении эволюции массы на единицу объема это сводится к уравнению адвекции плотности в форме потока:
∂ρ∂t=−∇⋅(ρu)
Хорошо, что это просто уравнение адвекции произвольного скалярного поля (в нашем случае это плотность ), и его (относительно) легко решить, при условии адекватных схем разности времени и пространства и начальных и граничные условия.ρ
При разработке схемы конечных разностей мы заботимся о сходимости, стабильности и точности. Схема сходится, если когда . Устойчивость схем гарантирует, что величина остается конечной при . Формальная точность схемы показывает, где лежит ошибка усечения в разложении Тейлора в частную производную. Посмотрите учебник CFD для получения более подробной информации об этих фундаментальных свойствах схемы дифференцирования. Δt→0At→∞ΔAΔt→∂A∂tΔt→0At→∞
Теперь самый простой подход - перейти прямо к разнице вверх по течению 1-го порядка. Эта схема является положительно определенной, консервативной и вычислительно эффективной. Первые два свойства особенно важны, когда мы моделируем эволюцию величины, которая всегда положительна (т.е. масса или плотность).
Для простоты, давайте посмотрим на 1-D случай:
∂ρ∂t=−∂(ρu)∂x
Теперь удобно определить поток , чтобы:Φ=ρu
∂(ρu)∂x=∂Φ∂x≈ΔΦΔx≈Φi+1/2−Φi−1/2Δx
Вот схема того, что мы моделируем:
u u
| --> --> |
| rho | rho | rho |
x-----o-----x-----o-----x-----o-----x
i-1 i-1/2 i i+1/2 i+1
Мы оцениваем эволюцию в клетке . Чистая прибыль или убыток происходят из разницы того, что входит, и того, что выходит, . Здесь мы начинаем расходиться с ответом Павла. При истинном консервативном различении вверх по течению количество в центре клетки переносится скоростью на краю ее клетки в направлении ее движения. Другими словами, если вы представляете, что вы - адвектированное количество, и вы сидите в центре клетки, вас переносят в клетку перед вами со скоростью на краю клетки. Оценка потока на краю ячейки как произведение плотности и скорости, как на краю ячейки, не является правильной и не сохраняет адвективную величину.ρiΦi−1/2Φi+1/2
Входящие и исходящие потоки оцениваются как:
Φi+1/2=ui+1/2+|ui+1/2|2ρi+ui+1/2−|ui+1/2|2ρi+1
Φi−1/2=ui−1/2+|ui−1/2|2ρi−1+ui−1/2−|ui−1/2|2ρi
Вышеуказанная обработка разности потоков обеспечивает определенность в восходящем направлении. Другими словами, он регулирует направление разности в соответствии со знаком скорости.
Критерий устойчивости Куранта-Фридрихса-Леви (CFL), при выполнении разности во времени с простым первым порядком, прямое различие Эйлера задается как:
μ=uΔtΔx≤1
Обратите внимание, что в двух измерениях критерий устойчивости КЛЛ является более строгим:
μ=cΔtΔx≤12–√
где - величина скорости, .cu2+v2−−−−−−√
Некоторые вещи для рассмотрения. Эта схема может подходить или не подходить для вашего приложения в зависимости от того, какой процесс вы моделируете. Эта схема очень диффузная и подходит для очень гладких течений без резких градиентов. Это также более распространено для более коротких временных шагов. В одномерном случае вы получите почти точное решение, если градиенты очень малы, и если . В двумерном случае это невозможно, а диффузия анизотропна.μ=1
Если ваша физическая система рассматривает ударные волны или высокие градиенты другого рода, вам следует изучить различие более высокого порядка вверх по течению (например, 3-го или 5-го порядка). Кроме того, возможно, стоит взглянуть на семейство схем с коррекцией потока (Zalesak, 1979, JCP); антидиффузионная поправка для вышеуказанной схемы Смоларкевичем (1984, JCP); Семейство схем MPDATA Смоларкевича (1998, JCP).
Для разницы во времени разность Эйлера 1-го порядка может быть удовлетворительной для ваших нужд. В противном случае обратите внимание на методы более высокого порядка, такие как Рунге-Кутта (итеративный) или Адамс-Башфорт и Адамс-Моултон (многоуровневый).
Было бы целесообразно заглянуть в какой-нибудь учебник для выпускников CFD для краткого изложения вышеупомянутых схем и многого другого.