j+1/2

advertisement
1. Алгоритм решения уравнений Сен-Венана
на разнесенной сетке схемой Хойна
Случай докритического потока ( Fr  1 )
Решаемые в настоящей модели уравнения Сен-Венана выглядят следующим
образом
S SU

 Er ,
t
x
  h  hr 
U 1 U 2
gU 2
E U  U

 g
 2
 r  r
,
t 2 x
x
C  R R
S
x x
hr  f sh 1  S  .
В этом уравнении опущен эффект неоднородности распределения скорости в
пределах поперечного сечения потока (ее эффект невелик, Коваленко и др.,
2006). Задача решается в области x 0, X  , t>0.
В случае докритического потока на границе x1  0 задается скорость U  x1 , t j 
, а на границе xn 1  X  xn1 2 - уровень воды hr nj  1 [Wu, 2008].
2
2
Уравнение для импульса в граничной точке i=1 записывается следующим
образом (пренебрегая источником в правой части за счет боковых притоков)
U  x1 , t
g
j 1
  U  x1, t   1 4 U 2j  U  x1, t j   U 2  x1, t j  
t
x1
2
j
 
   U  x ,t  g 
h1 1  hr S1j 1  h1 1  hr S1j 1
2
2
2
x1
2
2
2 x ,1 1 U 2j  U  x1 , t j   2 F  x1 , t j 
2

,
2
x1
 x1 

 
j
1
C 2  R1j  R1j

1
R1j   R w1 1 , hr1j 1  R w1 1 , hr1j 1  .

2
2
2
2 
2 
(1.1)
Отсюда следует расчетная формула
 
x1Y
 hr S1j 1  h1 1  h1 1 ,
2
2
2
g
hr1j 1 
2
j
j
2
j
U  x1 , t j 1   U  x1 , t j  1 4 U 2  U  x1 , t    U  x1 , t 
Y


t
x1
2
U 2  x1 , t j  g
C 2  R1j  R1j
(1.2)

2 x ,1 1 U 2j  U  x1 , t j   2 F  x1 , t j 
2

.
2

x
 x1 
1
Предположим, что Si j 1 , i  1,..., n  1 и U i j , i  2,..., n уже вычислены на
2
предыдущей итерации цикла по времени. Тогда, перед расчетом по формуле
(1.2) необходимо задать U  x1 , t j  и U  x1 , t j 1  . Коэффициент вязкости  x ,i  1
2
на настоящем этапе считается или константой, или величиной, зависящей
только от x. Величиной F  x1 , t j  можно, по-видимому, без существенной
ошибки пренебречь.
Перейдем к граничным условиям на границе xn  X . Уравнение движения
для i=n можно записать следующим образом
U U
t
*
n
g
j
n
U 

j 2
n
 1 4 U nj  U nj1 
2

xn1
 
hn 1  hr  X  xn 2, t j   hn 1  hr S nj 1
2
2
xn1
2 x ,n 1 U nj  U nj1 
2
 xn1 

2

2 F  xn , t j 
xn1
 
,

1
Rnj   R wn 1 , hr nj  1  R wn 1 , hr nj  1 
2
2
2
2 

2 
2
U  g
C R R
j 2
n
2
j
n
j
n

, (1.3)
откуда легко выражается U n* . Если Si j 1 , i  1,..., n  1 и U i j , i  2,..., n уже
2
вычислены, то для расчета по формуле (1.3) нужно присвоить значение
hr  X  xn 2, t j  .
Шаг «предиктор» по схеме Хойна осуществляется по формулам
Si*1 2  Si j 1 2  tTs ,i 1 2 , i  1,..., n  1,
Ts ,i 1 2  E
j
ri 1 2
S

j
i 3 2
 Si j 1 2 U i j 1   Si j 1 2  Si j 1 2 U i j (1.4)
.
2xi
U i*  U i j  tTU ,i , i  2,..., n  1,
TU ,i
U

j
i 1
 U i j   U i j  U i j 1 
2
4  xi 1  xi 
 
2

  

2  hi  1  hr Si j 1  hi  1  hr Si j 1 
Er ij 1  Er ij 1 U i j
 2

2
2
2 
2
2
g

 (1.5)
j
j
xi 1  xi
Si  1  Si  1
U  g
R R
j 2
i
C2
j 1
i
i
j 1

2 x ,i  1 U
2
j
i 1
 Ui
j
xi  xi 1  xi 
 


2
2 x ,i  1 U i  U
j

2
j
i 1

xi 1  xi 1  xi 
1
Ri j 1   R wi  1 , hr ij11  R wi  1 , hr ij11
2
2
2
2
2 
2
,
 .
Поскольку Si j 1 , i  1,..., n  1 и U i j , i  2,..., n уже вычислены (U1j  U  x1 , t j  2
граничное условие), то для расчета по формуле (1.4) нужно только найти
Snj 1  f sh hr X  xn 2, t j  и S1j 1  f sh  hr1j 1  , где функция f sh зависит от

2

2
2
формы поперечного сечения реки. Для формулы (1.5) все данные к моменту
вычислений готовы. После вычислений по (1.4) и (1.5) находим значения
переменных на промежуточном шаге по времени:

j 1
Ui
j 1
2


1 j
Si  1  Si* 1 , i  1,..., n  1,
2
2
2
(1.6)
1 j
*
 U i  U i  , i  2,..., n.
2
Si  1 2 
2

j 1
После этого находим hr1 1 2 по формуле, аналогичной (1.2)
2
j 1
hr1 1 2 
2
 
x1Y
j 1
 hr S1 1 2  h1 1  h1 1 ,
2
2
2
g




2
U j  1 2  U x , t j  1 2   U 2 x , t j  1 2
j 1
j
1
4
1
1
U  x1 , t   U  x1 , t 
 2

Y


t
x1

U 2 x1 , t
j 1
2
g 
(1.7)
C 2  R1j  R1j




j 1
j 1
j 1
2 x ,1 1 U 2 2  U x1 , t 2  2 F x1 , t 2

2 
 
,
2
x1
 x1 
 


1
R1j   R w1 1 , hr1j 1  R w1 1 , hr1j 1  .

2
2
2
2 
2 

Перед этим вычислением нужно задать U x1 , t
j 1
2
 . Далее согласно формуле,
аналогичной (1.3), находим U nj 1




2
2

j 1
j 1
j 1
2
2
2
 1 4 U n  U n1
 Un

xn1

2

j 1
j 1
j 1
Un 2 g
 hn 1  hr X  xn 2, t 2  hn 1  hr S n 1 2
2
2
2
U nj 1  U nj  t  g
 2 j j

x
C  Rn  Rn
n 1


j 1
j 1
j 1
2 F xn , t 2
 2 x ,n 1 U n 2  U n1 2
2


2
xn1

 xn1 

1
Rnj   R wn 1 , hr nj  1  R wn 1 , hr nj  1 
2
2
2
2 

2 
(1.8)


 
  







Для формулы (1.8) нужно задать hr X  xn 2, t
j 1
2
.







,






Теперь можно
переходить к шагу «корректор» для внутренних точек расчетной области.
Аналогично (1.4)
Si j 112  Si j 1 2  tTs ,i 1 2 , i  1,..., n  1,
j 1
2
ri 1 2
Ts ,i 1 2  E


j 1
j 1


j 1
j 1
j 1

Si 3 22  Si 1 22 U i 1 2  Si 1 22  Si 1 22 U i
j 1
(1.9)
2
.
2xi

Для этой формулы нужно определить Er i 1 22 , Sn 1 2  f sh hr X  xn 2, t

2
j 1
j 1
и S1 1 2  f sh  hr1 1 2  . И, наконец,

2
2 

j 1
j 1
Ui
j 1
2
 U i j  tTU ,i , i  2,..., n  1,
U


TU ,i
j 1
2
i 1
 Ui
j 1
  U
2
2
j 1
2
i
U
j 1
2
i 1
4  xi 1  xi 
 
j 1
2


2
  

j 1
j 1
j 1
j 1
j 1
2
2
2
2  hi  1  hr Si  1 2  hi  1  hr Si  1 2 
E

E
U
r
1
r
1
i
i

i

 2

2
2
2 
2
2
g

 (1.10)
j
xi 1  xi
Si  1  Si j 1
U  g  2 U
j 1
2
2
x ,i  1
i
C 2  Ri j  Ri j
2
j 1
2
i 1
 Ui
j 1
2
xi  xi 1  xi 
 

  2 U
1
Ri j   R wi  1 , hr ij 1  R wi  1 , hr ij 1
2
2
2
2
2 
x ,i  1
2
2
j 1
i
2
2
j 1
 U i 1
2
xi 1  xi 1  xi 
,
 .
Для этой формулы все данные к моменту вычислений готовы. Завершается
шаг по времени расчетом уровня воды
hr ij11  f sh 1  Si j 11  , i  1,..., n  1. (1.11)
2
 2 
Теперь запишем алгоритм компактно.
В начале цикла известны Si j 1 , i  1,..., n  1 и U i j , i  2,..., n
2
1. Задание U  x1 , t j  и U  x1 , t j 1 
2. Расчет hr1j 1 (уравнение (1.2))
2
3. Задание hr  X  xn 2, t j 
4. Расчет U n* (уравнение (1.3))


5. Расчет Snj 1  f sh hr X  xn 2, t j  и S1j 1  f sh  hr1j 1 


2
2
2
6. Вычисление Si*1 2 , i  1,..., n  1 (формула (1.4))
7. Вычисление U i*  U i j  tTU ,i , i  2,..., n  1 (формула(1.5))
j 1
8. Расчет Si  1 2 , i  1,..., n  1, U i
j 1
2
, i  2,..., n. (формула (1.6))
2

9. Задание U x1 , t
j 1
2

j 1
10. Нахождение hr1 1 2 (формула (1.7))
2

11. Задание hr X  xn 2, t
j 1
2

12. Вычисление U nj 1 (формула (1.8))

13. Нахождение Er i 1 22 , Sn 1 2  f sh hr X  xn 2, t

2
j 1
j 1
j 1
14. Вычисление Sij 112 , i  1,..., n  1 (формула (1.9))
15. Вычисление U i
j 1
2
, i  2,..., n  1 (формула (1.10))
16. Нахождение hr ij11  f sh 1  Si j 11  , i  1,..., n  1.
 2 
2
Тестовые эксперименты:
1. «Нет воды»
2. Стационарный поток без трения
3. Состояние покоя при неровном дне
4. Прорыв дамбы
2

 и S j  12  f h j  12 
sh  r1 1 
1 1

2

2 
Wu, W. (2008), Computational river dynamics, 494 pp., Taylor and Francis Group.
2.Алгоритм решения уравнений Сен-Венана
на разнесенной сетке схемой КАБАРЕ
Случай докритического потока ( Fr  1 )
В настоящем пункте приведены численная схема и алгоритм решения
системы уравнений Сен-Венана, записанной в следующей форме:
S SU

 Er ,
t
x
  h  hr 
SU SU 2
SgU 2
 U

  Sg
 2
 S r
,
t
x
x
C  R R
x x
hr  f sh 1  S  .
(2.1)
В дальнейшем также будем обозначать расход воды D  SU .
В граничных точках i=1,n для расчета уровня воды и скорости течения
применяются уравнения (1.2) и (1.3), соответственно. Во внутренней области
применяется схема КАБАРЕ. Шаг «предиктор» выглядит следующим
образом:
j
j
Si j 11/2
2  Si 1 2  t 2 * TS ,i 1 2 , i  1,..., n  1,
TSj,i 1 2  TSj,divadv ,i 1 2  TSj,nondivadv ,i 1 2 ,
TSj,nondivadv ,i 1 2  Er ,ji 1 2
j
S ,divadv ,i 1 2
T
U

j
i 3 2
 U i j 1 2  Si j 1  U i j 1 2  U i j 1 2  Si j (2.2)
.
2xi
Di j 1/2  Di j  t 2 * TDj,i , i  2,..., n  1,
TDj,i  TDj,divadv ,i  TDj,nondivadv ,i
j
D ,divadv ,i
T
2  Di j 1/2U i j 1/2  Di j 1/2U i j 1/2 

xi 1  xi
TDj,nondivadv ,i 

 Si j 1  Si j 1
S
2
j
i 1
2
 Si j 1
2
j
i
2

 
 
h  h S j
 hi  1  hr Si j 1 
 i  1 2 r i  1 2
2
2 

g
xi 1  xi
U  g 
j 2
i
2C  R  Ri j
2
Si j 1  Si j 1  x ,i  1 U i j 1  U i j   x ,i  1 U i j  U i j 1  
2
2 
2
2
.



xi 1  xi
xi
xi 1


(2.3)
Здесь
0, если Di j  0
Ui   j
, i  2,..., n  1 .
j
j
j
2
D
S

S
,
если
D

0
i 1/2 
i
 i  i 1/2
j
Далее, по формулам (1.7), (1.8) вычисляются граничные значения на
промежуточном, (j+1/2)-м, шаге. Следующий шаг схемы КАБАРЕ
заключается в экстраполяции значений площади сечения, скорости и расхода
на (j+1)-й шаг. Вначале вычисляются предварительные значения
экстраполированных величин. Так, для площади поперечного сечения:
 j 1/2 1 j
2Si 1/2   Si 1/2  Si j 3/2  , еслиU i j 1  0 и U i j 1  0


2
Si j 1*  
.
1
j

1/2
j
j
j
j
2S
 S
 Si 3/2  , еслиU i 1  0 и U i 1  0
 i 1/2 2 i 1/2
(2.4)
Далее, к предварительным значениям применяется поправка для обеспечения
монотонности схемы («монотонизатор»), которую мы запишем для случая,
когда U i j 1  0 и U i j 1  0 (случай U i j 1  0 и U i j 1  0 записывается аналогично):
Si j 1  max  min  Si j 1* , S max  , S min  , где
t 
1 j
j
j 1/2
j 1/2
j 1/2
 2  Si 3/2  Si 1/2   TS ,nonadv ,i 1/2 t , Si 1/2  TS ,nonadv ,i 1/2 2 , 
Smax  max 
,
1

t
j 1/2
  S j  S j   T j 1/2



i 1/2
i 1/2
S ,nonadv ,i 1/2  TS , nonadv ,i 1/2 
2
2

t  (2.5)
1 j
j
j 1/2
j 1/2
j 1/2
S

S

T

t
,
S

T
,


i 1/2
S , nonadv ,i 1/2
i 1/2
S , nonadv ,i 1/2
 2 i 3/2
2 
Smin  min 
,
1

t
j 1/2
  S j  S j   T j 1/2



i 1/2
i 1/2
S ,nonadv ,i 1/2  TS , nonadv ,i 1/2 
2
2

1/2
1/2
U i j 1/2  U i j 11/2
Si j 3/2
 Si j 1/2
1/2
j 1/2
TSj,nonadv

T

.
,i 1/2
S ,i 1/2
2
xi  1 2  xi 1  xi 1 
Экстраполяция скорости и расхода течения осуществляется аналогично, но с
дробных узлов сетки j-го шага на дробные узлы (j+1)-го.
При выполнении заключительного этапа схемы – корректора слагаемые
адвекции, записанные в дивергентной форме, вычисляются по значениям,
экстраполированным на (j+1)-й шаг по времени по формулам (2.5) для
площади и аналогичным – для скорости и расхода, а остальные члены
уравнений – по значениям на (j+1/2)-м шаге:
*
Si j 112  Si j 11/2
2  t 2 * TS ,i 1 2 , i  1,..., n  1,
1
j 1/2
TS*,i 1 2  TSj,divadv
,i 1 2  TS ,nondivadv ,i 1 2 ,
1/2
j 1/2
TSj,nondivadv
,i 1 2  Er ,i 1 2
j 1
S ,divadv ,i 1 2
T
U

j 1
i 3 2
 U i j 112  Si j 11  U i j 112  U i j 112  Si j 1 (2.6)
.
2xi
Di j 1  Di j 1/2  t 2 * TD*,i , i  2,..., n  1,
1
j 1/2
TD*,i  TDj,divadv
,i  TD ,nondivadv ,i
j 1
D ,divadv ,i
T
1
1
1
1
2  Di j 1/2
U i j 1/2
 Di j 1/2
U i j 1/2


xi 1  xi
1/2
TDj,nondivadv
,i 

 Si j 11/2  Si j 11/2
S
2
j 1/2
i 1
2
2


 
 Si j 11/2 U i j 1/2  g
2C  Ri
2
2
j 1/2
 
 h  h S j 1/2  h  h S j 1/2 
r
i 1
i 1
 i 12 r i 12
2
2 

g
xi 1  xi
2
 Ri j1/2

Si j 11/2  Si j 11/2  x ,i  1 U i j 11/2  U i j 1/2   x ,i  1 U i j 1/2  U i j 11/2   (2.7)
2
2 
2
2
.



xi 1  xi
xi
xi 1


И, наконец, рассчитывается скорость в целых узлах:
Ui
j 1
0, если Di j 1  0
  j 1
, i  2,..., n  1
j 1
j 1
j 1
2
D
S

S
,
если
D

0
i 1/2 
i
 i  i 1/2
.
Поскольку схема КАБАРЕ эквивалентна некоторой трехслойной по времени
схеме (ссылка), то в ней присутствует вычислительная мода, и для ее
подавления применяется фильтра Аселина.
Download