1612725465-542b3179b36a4849700e0b2ecf7da111 (828844), страница 17
Текст из файла (страница 17)
д.), при θ = O(h) получались схемы второго порядка аппроксимации, при использовании для функции θ формулы (3.34) схема сохраняла монотонность численного решения (см. теорему 3.1). Попробуемобобщить эту схему на случай системы уравнений. Подсказку, как этосделать, здесь может опять дать система уравнений в инвариантах Римана (7.15).Применительно к первому из уравнений (7.15) схема предиктор-корректор (3.3), (3.4) запишется как∗nrj+1/2− 21 (rj+1+ rjn )1n+ λ1 rx,j+1/2= 0,11 + θj+1/2τ /2(7.30)∗∗rj+1/2− rj−1/2rjn+1 − rjn+ λ1= 0,τh(7.31)где сеточная функция θ1 может быть вычислена по формуле (3.34).Здесь и всюду далее мы будем пользоваться выражением (3.34), записанным в виде формулы (4.56), которая в рассматриваемом случае113выглядит следующим образом:0g̃j+1/2 − g̃j+1/2−σθ0θj+1/2 =g̃j+1/2θ0припри g̃j+1/2 ≤ g̃j+1/2−σ ,g̃j+1/2 · g̃j+1/2−σ ≥ 0, g̃j+1/2 > g̃j+1/2−σ ,(7.32)g̃j+1/2 · g̃j+1/2−σ ≥ 0,приg̃j+1/2 · g̃j+1/2−σ < 0,где σ = sgn(λ1 ),ng̃j+1/2 = |λ1 | (1 − æ|λ1 |) rx,j+1/2,θ0 =1 − æ|λ1 |.æ|λ1 |(7.33)Из теоремы 3.1 следует, что при выполнении условия|λ1 |æ < 1(7.34)схема предиктор-корректор (7.30), (7.31) будет сохранять монотонность1инварианта rjn , если для вычисления функции θj+1/2использовать формулы (7.32), (7.33).Возьмем аналогичную схему и для второго уравнения системы (7.15):s∗j+1/2 − 12 (snj+1 + snj )1+ λ2 snx,j+1/2 = 0,21 + θj+1/2τ /2s∗j+1/2 − s∗j−1/2sn+1− snjj+ λ2= 0.τhЭта схема при условии|λ2 |æ < 1(7.35)(7.36)(7.37)будет сохранять монотонность сеточной функции snj , если функцию2θj+1/2задать по формуле (7.32), положив в ней σ = sgn(λ2 ),g̃j+1/2 = |λ2 | (1 − æ|λ2 |) snx,j+1/2 ,θ0 =1 − æ|λ2 |.æ|λ2 |(7.38)Из сказанного следует, что при применении схемы предиктор-корректор для системы уравнений (7.4) необходимо использовать две функции θk (k = 1, 2), определяемые поведением сеточных функций rn и sn .114Легко понять, что обе функции θk можно задать одной формулой k k0при≤g̃g̃,j+1/2j+1/2−σkkkg̃·g̃≥0,j+1/2j+1/2−σkkk g̃−g̃kj+1/2j+1/2−σ kkkkθj+1/2 =(7.39)θпри>g̃g̃0j+1/2j+1/2−σk ,kg̃j+1/2kk≥ 0,g̃j+1/2· g̃j+1/2−σkkkkθ0при g̃j+1/2 · g̃j+1/2−σk < 0,где k = 1, 2, σk = sgn(λk ),kg̃j+1/2= |λk | (1 − æ|λk |) pnk,j+1/2 ,θ0k =1 − æ|λk |,æ|λk |(7.40)pn1,j+1/2 и pn2,j+1/2 – компоненты вектора P nj+1/2 = Lunx,j+1/2 .
Достаточным условием сохранения монотонности величин r и s является одновременное выполнение двух неравенств (7.34) и (7.37), т. е. выполнениенеравенстваmax (|λ1 |, |λ2 |) æ < 1.(7.41)Построив разностную схему для инвариантов Римана, можно перейти к разностной схеме, аппроксимирующей непосредственно системууравнений (7.3).
Если ввести векторы( )( ∗ )rrs=, s∗ =,ss∗то уравнения (7.30), (7.31) и (7.35), (7.36) можно записать в векторномвиде:(nDj+1/21 nn)−1 s∗j+1/2 − 2 (sj+1 + sj )sn+1− snjj+Λττ /2∗sj+1/2 − s∗j−1/2h(7.42)= 0,где D – диагональная матрица11 + θj+1/2nDj+1/2=0115+ Λ snx,j+1/2 = 0,01+2θj+1/2.(7.43)Далее введем вектор u∗ = Rs∗ и учтем, что s = Lu. Тогда уравнения (7.42) запишутся какLu∗j+1/2 − 12 (unj+1 + unj )τ /2n+ Dj+1/2ΛL unx,j+1/2 = 0,u∗j+1/2 − u∗j−1/2un+1− unjjL+ ΛL=0τh(7.44)и после умножения слева на матрицу R примут вид:u∗j+1/2 − 12 (unj+1 + unj )τ /2n+ RDj+1/2ΛLunx,j+1/2 = 0,u∗j+1/2 − u∗j−1/2un+1− unjj+ A0= 0.τh(7.45)(7.46)В рассматриваемом случае системы (7.3) линейных уравнений с постоянными коэффициентами справедливо равенствоf = A0 u,(7.47)на основе которого можно определить векторыf nj = A0 unj ,f ∗j+1/2 = A0 u∗j+1/2 .(7.48)Тогда уравнение (7.46) принимает следующий окончательный вид:f ∗j+1/2 − f ∗j−1/2un+1− unjj+= 0.τh(7.49)Это уравнение аппроксимирует дивергентную систему (7.3), являетсяаналогом скалярного уравнения (3.4) и используется на втором шагесхемы предиктор-корректор.Из вида уравнения (7.49) следует, что для выполнения шага корректор необходимо иметь в полуцелых узлах xj+1/2 вектор потоков f ∗j+1/2 .Получим разностное уравнение для вычисления этого вектора.
Умножим уравнение (7.45) слева на матрицу A0A0u∗j+1/2 − 12 (unj+1 + unj )τ /2n+ A0 RDj+1/2ΛLunx,j+1/2 = 0116и воспользуемся равенствами (7.48) и (7.13):f ∗j+1/2 − 12 (f nj+1 + f nj )n+ RΛLRDj+1/2ΛLunx,j+1/2 = 0.τ /2nnУчитывая равенства LR = E, ΛDj+1/2= Dj+1/2Λ, приходим к уравнениюf ∗j+1/2 − 21 (f nj+1 + f nj )n+ RDj+1/2Λ2 Lunx,j+1/2 = 0.τ /2(7.50)И, наконец, принимая во внимание равенствоf nx,j+1/2 = A0 unx,j+1/2 = RΛLunx,j+1/2 ,(7.51)ΛLunx,j+1/2 = Lf nx,j+1/2 ,(7.52)получаем, чтопоэтому разностное уравнение для вектора потоков записывается в следующей окончательной форме:f ∗j+1/2 − 12 (f nj+1 + f nj )n+ RDj+1/2ΛLf nx,j+1/2 = 0.τ /2(7.53)Это уравнение является разностным аналогом дифференциального уравнения для вектора потоков∂f∂f+ A0= 0,∂t∂x(7.54)которое получается из уравнения (7.3) после умножения последнего слева на матрицу A0 .Итак, для системы уравнений (7.3) нами построена схема предикторкорректор (7.53), (7.49), (7.39), которая обладает такими же свойствами, как схема (3.3), (3.4) для одного скалярного уравнения переноса.В частности, при выполнении условия (7.41) она сохраняет монотонность сеточных функций rjn и snj , определенных формулами (7.17).kЛегко проверить, что при θj+1/2= O(h) (k = 1, 2) схема (7.53),(7.49) имеет второй порядок аппроксимации (см.
задачу 7.1). В частности, при θk ≡ 0 она совпадает со схемой Лакса – Вендроффа. Еслиkθj+1/2= const ̸= 0, то схема предиктор-корректор (7.53), (7.49) являетсяkсхемой первого порядка аппроксимации. В частности, при θj+1/2= θ0kона совпадает с противопоточной схемой (7.23) (см. задачу 7.2).117kПри θj+1/2= θ = const для устойчивости схемы по начальным данным необходимо выполнение неравенств (см.
задачу 7.3)θ ≥ 0,1max (|λ1 |, |λ2 |) æ ≤ √,1+θ(7.55)которые аналогичны условию устойчивости (3.17) схемы предикторкорректор (3.3), (3.4), аппроксимирующей скалярное уравнение переноса (3.1).7.4. Результаты расчетов. Приведем результаты численного решения с помощью схемы предиктор-корректор задачи с известным решением. Пусть u0 = 0, в начальный момент времени жидкость покоитсяи известна форма ее свободной поверхности, т. е.= η0 (x).(7.56)= 0, η(x, t)u(x, t)t=0t=0Решение задачи Коши (7.2), (7.56) при u0 = 0 описывается формулами(1.18), (1.12), которые для начальных условий (7.56) принимают следующий вид:η(x, t) =η0 (xl ) + η0 (xr )1η0 (xl ) − η0 (xr ),u(x, t) = √ ·,22h0√√xl = x − h0 t,xr = x + h0 t.(7.57)(7.58)Рассмотрим, например, задачу о прорыве плотины в линейной постановке.
В этой задаче предполагается, что в начальный момент временижидкость покоится, а полная глубина H = η + h0 имеет различныепостоянные значения слева и справа от некоторой точки x0 :{H1 , если x < x0 ,H(x, 0) =(7.59)H2 , если x > x0 .Далее будем предполагать, что H1 > H2 . В этом случае при t > 0возникает течение с двумя ступеньками, одна из которых движется влево, а другая – вправо.
Между этими подвижными разрывами возникаеттечение с постоянной скоростью U0 и постоянной глубиной H0 . Согласноформулам (7.57), (7.58), задача о прорыве плотины в рамках линейноймодели мелкой воды имеет следующее точное решениееслиx < x1 (t), H1 ,H1 + H2H(x, t) =(7.60)H0 =, если x1 (t) < x < x2 (t),2H2 ,еслиx > x2 (t),118если 0,H1 − H2u(x, t) =U0 =, если20,еслиx < x1 (t),x1 (t) < x < x2 (t),(7.61)x > x2 (t),гдеx1 (t) = x0 − t,(7.62)x2 (t) = x0 + t,и предполагается, чтоh(x) = h0 ≡ 1.(7.63)Графики точного решения изображены на рис.
26 штриховыми линиями.η0.3u0.00.2-0.20.1-0.40.0-0.60510x0а510x510xбη0.3u0.00.2-0.20.1-0.40.0-0.60510x0вгРис. 26. Графики свободной границы (а и в) и скорости (б и г) дляпараметра θ = 0 (а и б) и функции θ, заданной формулой (7.39) (в иг). x0 = 5, H1 = 1, H2 = 0, 5, t = 3, N = 100119Из формул (7.17), (7.56), (7.63) следует, что в начальный моментвремени инварианты Римана r и s задаются формулами{{−H1 , если x < x0 ,H1 , если x < x0 ,r(x, 0)=s(x, 0)=(7.64)−H2 , если x > x0 ,H2 , если x > x0 .Следовательно, при H1 > H2 функция r(x, 0) является монотонно возрастающей, а функция s(x, 0) – убывающей.При использовании схемы Лакса – Вендроффа численное решениеосциллирует (см.
сплошные линии на рис. 26, a, б). Схема предикторкорректор (7.45), (7.49), (7.39) сохраняет монотонность начальных функций (7.64). Более того, поскольку Hjn = 0, 5(snj − rjn ), то численное решение Hjn будет монотонно убывающей функцией на всех слоях по времени(рис. 26, в), как и точное решение (7.60). Что касается скорости unj , торасчеты показывают, что ее профили не имеют осцилляций и хорошопередают положение движущихся разрывов (7.62) (рис. 26, г).7.5. Произвольная гиперболическая система с постоянными коэффициентами. При построении схемы (7.53), (7.49), (7.39) длясистемы линейных уравнений мелкой воды мы использовали схему предиктор-корректор (3.3), (3.4), (3.34), (3.31) для скалярного уравненияпереноса. В § 3 было отмечено, что указанная схема предиктор-корректор совпадает с модифицированной схемой Лакса – Вендроффа (2.51)с функцией-ограничителем типа minmod (2.50).
Но в модифицированной схеме Лакса – Вендроффа могут использоваться и другие функцииограничители, гарантирующие выполнение TVD-условия (2.23), т. е. онаявляется более универсальной, чем схема предиктор-корректор с параметром (3.34). Поэтому представляет интерес обобщение модифицированной схемы Лакса – Вендроффа (2.51) на систему линейных уравнений мелкой воды. Мы, однако, выполним такое обобщение сразу дляобщего случая однородной гиперболической системы (1.1) из m уравнений с постоянной матрицей A.Пусть строками матрицы L являются левые собственные векторыlk (k = 1, .
. . , m) матрицы A, соответствующие собственным значениямλk , а столбцами матрицы R – правые собственные векторы r k . Собственные векторы lk и r k можно отнормировать таким образом, чтобывыполнялись равенства (7.11). Тогда имеют место соотношения вида(7.12), (7.13):λ1 · · ·0.. ,..LAR = Λ ≡ ...A = RΛL.(7.65).. 0···λm120Умножая систему уравнений (1.1) слева на матрицу L, получаемсистему уравнений (7.14), которая состоит из m независимых уравнений переноса (1.3) относительно определенных по формуле (1.4) инвариантов Римана sk .
Каждое из уравнений (1.3) будем аппроксимироватьс помощью модифицированной схемы Лакса – Вендроффа (2.51):n+1n− (sk )jλk + |λk |λk − |λk |nn(sk )x,j−1/2 +(sk )x,j+1/2 +τ22[] (7.66)|λk |nnnn+(1 − æ|λk |) (Φk )j+1/2 (sk )x,j+1/2 − (Φk )j−1/2 (sk )x,j−1/2 = 0.2(sk )j+В разностных уравнениях (7.66) для каждого инварианта Риманаsk (k = 1, . .