Как следует обрабатывать непостоянные коэффициенты с помощью схемы против ветра первого порядка конечного объема?

11

Начиная с уравнения адвекции в форме сохранения.

ut=(a(x)u)x

где - скорость, зависящая от пространства, а u - концентрация вида, которая сохраняется.a(x)u

Дискретизация потока (где поток , определенный на краях ячеек между точками сетки) дает, u t = 1f=a(x)u

ut=1h(fj12fj+12)

Используя первый порядок против ветра, мы приближаем потоки как

который дает, ut=1

fj12=a(xj12)uj1fj+12=a(xj+12)uj
ut=1h(a(xj12)uj1a(xj+12)uj)

Если был постоянным, то это сведется к известной схеме против ветра, т.е. u t = aa(x).ut=ah(uj1uj)

Мой вопрос: как мы можем относиться к непостоянным коэффициентам уравнения переноса? Скорость определяется в клеточных центрах, поэтому простой подход будет следующим:

a(xj12)a(xj1)a(xj+12)a(xj)

Это мой предпочтительный подход, потому что он очень прост в реализации.

Однако мы могли бы также использовать (я предполагаю) схему усреднения для определения скорости на краях ячейки,

a(xj12)12a(xj1)+12a(xj)a(xj+12)12a(xj)+12a(xj+1)

В книге Левека он говорит:

a(x)ajaj12

Но после этого он не особо уточняет. Какой общий подход?

Я решаю проблему сохранения (я использую уравнение адвекции в качестве уравнения неразрывности), поэтому я хочу убедиться, что после применения дискретизации свойство сохранения сохраняется. Я хотел бы избежать каких-либо скрытых сюрпризов в отношении этих переменных коэффициентов! У кого-нибудь есть общие замечания и рекомендации?


Обновление Ниже приведены два действительно хороших ответа, и я могу выбрать только один :(

boyfarrell
источник

Ответы:

4

a

Что наиболее важно (и вы уже затронули это в своем вопросе), так это то, что дискретизированная система все еще консервативна. При условии, что ваша схема может быть записана в виде

ujt=Fj12(uj1,uj)Fj+12(uj,uj+1)

тогда оно должно быть консервативным, так как

tudx=jujtδx=j(Fj12Fj+12)δx=(F12FN+12)δx

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

Если вы также решаете для скорости и у вас есть система уравнений, вам, возможно, нужно быть более осторожным. Аналогично, если вы решаете нелинейный гиперболический PDE и используете ограничители потока, вам следует быть еще более осторожным.

* Однако для системы гиперболических PDE, использование разнесенных сеток может существенно улучшить искусственное рассеяние / диффузию. Если вы хотите узнать больше, посмотрите C-сетки Аракавы или ознакомьтесь с главой 4 этой книги .

Даниэль Шаперо
источник
Спасибо за объяснение. И ваша интуиция верна; Я решаю систему уравнений, где одно из уравнений является скоростью (PDE других переменных). Система уравнений только 1D, я планирую использовать адаптивный метод против ветра 1-го порядка (может переключаться между центральным и против ветра 2-го порядка), возможно, с экспоненциальной подгонкой. Я не использую ограничители потока, но система нелинейная. Нужно ли быть «осторожнее» в этой ситуации?
boyfarrell
Все зависит от того, ожидаете ли вы, что образуются ударные волны и тому подобное, есть ли вероятность того, что в некоторых регионах скорость упадет ниже нуля, или если скорость станет достаточно высокой, чтобы вы столкнулись с условием Куранта-Фридрихса-Леви в какой-то момент. Тем не менее, я сначала попробую простой подход, чтобы увидеть, работает ли он, что вполне может подойти. Если он потерпит неудачу, он сделает это эффектно и однозначно, поэтому я не думаю, что вам нужно беспокоиться о том, что что-то не так проскользнет под ваш радар.
Даниэль Шаперо
Да, я ожидаю, что скорость будет только ненулевой только в центре моей области, а затем быстро приближается к нулю, когда кто-то удаляется от центра. Я выбираю временной шаг так, чтобы условие КЛЛ было выполнено (с использованием максимальной скорости), а сетка фиксирована. Каковы критерии для ударной волны? Я не ожидаю увидеть это (но вы никогда не знаете).
Boyfarrell
5

a(x)

Под последовательным я подразумеваю, что единственное условие, которому должна удовлетворять интерполяция, это

ai+1/2+=ai+1/2

Другими словами, до тех пор, пока ваш метод интерполяции непрерывен за пределами ячейки, ваша дискретизация гарантированно останется консервативной.

Это может не показаться большой проблемой здесь в 1D (и не должно), но может вызвать проблемы на грубых интерфейсах на многоуровневых сетках AMR.

GradGuy
источник
uj+12a(xj+12)a(xj+12)a(xj+1)uj+12
@boyfarrell Было бы хорошо, если бы метод оставался консервативным. Это, однако, влияет на точность решения. Часто, например, в схемах ENO, каждый аппроксимирует всю функцию потока, а не скорость и решение отдельно.
GradGuy
4

a(xj12)

Чтобы понять, почему это так, рассмотрим, что аналитическое определение консервативного

tDu(x)dx=Da(x)u(x)dS,

D

Если наша дискретность имеет вид

ut(xj)=1h(a(xj12)uj12a(xj+12)uj+12)

x1,,xnD=[c,d]c=x12d=xn+12

1hj=1n(a(xj12)uj12a(xj+12)uj+12)=a(x12)u12a(xn+12)un+12,

uj12=uj1uj+12=uja(x)u

a(x)a(xjr),,a(xj+s)a(xj12)

Бен
источник