Численное решение краевых задач. Учебно-методическое пособие
.pdfЛакса–Ведроффа (явная)
vn 1 |
vn |
|
vn |
vn |
|
c2 vn |
2vn vn |
|
|
||
i |
i |
c |
i 1 |
i 1 |
|
|
i 1 |
i |
i 1 |
0; |
(5) |
2 |
|
h2 |
|
||||||||
|
|
2h |
|
|
|
|
|
||||
«левый уголок» (неявная)
|
|
vn 1 |
vn |
c |
vn 1 |
vn 1 |
0 |
; |
|
(6) |
|
|
|
i |
i |
|
i |
i 1 |
|
||||
|
|
|
|
|
|
h |
|
|
|
|
|
«правый уголок» (неявная) |
|
|
|
|
|
|
|
|
|||
|
|
vn 1 |
vn |
c |
vn 1 |
vn 1 |
0 |
, |
|
(7) |
|
|
|
i |
i |
|
i 1 |
i |
|
||||
|
|
|
|
|
|
|
h |
|
|
|
|
«прямоугольник» (неявная) |
|
|
|
|
|
|
|
|
|||
vn 1 |
vn |
vn 1 vn |
|
|
vn 1 vn 1 vn vn |
|
|
||||
i 1 |
i 1 |
i |
i |
c |
i |
i 1 |
|
i i 1 |
0 . |
(8) |
|
|
2h |
|
|||||||||
|
2 |
|
|
|
|
|
|
|
|||
Здесь T / N и h X /(M 1) –шагисеткиповремениипростран- |
|||||||||||
ству соответственно; |
n – номер временного слоя, n 0,..N . Решение на |
||||||||||
нулевом слое n 0 находится из начальных условий (1б): v0 |
(x ), |
|
i 1,..., M . |
i |
i |
Разностные уравнения (3)–(8) решаются в узлах сетки |
||
x (i 1)h |
при 2 i M . Значение vn 1 при i 1 определяется из гра- |
|
i |
1 |
|
ничного условия (1в). Для схем c центральной разностью (4) и (5) на правой границе вводится дополнительный узел xM 1 xM h , причем
задается
vMn 1 2vMn vMn 1 .
Программирование задачи поясним на примере схемы (3). Выражая из (3) vin 1 через старое решение (значения vin и vin 1), получаем
vin 1 vin (...) . В результате процедура схемы «левый уголок» имеет вид:
31
subroutine EXPL_LC(gam,t,x,v,Nx)
!явная схема "левый уголок"
!gam=c*tau/h - число Куранта
!старое время t=t_n
!Nx - количество узлов
!x=(x_1,…x_Nx) и v=(v_1,…,v_Nx) – массивы координат узлов и прибл.
решения
dimension x(Nx),v(Nx),v1(Nx) v1=v ! сохраняем старое решение v(1)=Uex(x(1),t) ! левое ГУ (i=1)
do i=2,Nx ! остальные узлы (2<=i<Nx) v(i)=v1(i)-gam*(…)
end do end
Вслучае схемы (4) или (5) рабочий массив v1 для хранения старого решения удлиняется: v1=(v1_1,…v1_Nx). Процедура для расчета точного решения (2г) имеет вид:
function Uex(x,t) common c; common ivar pi=4.*atan(1.)
b=x-c*t if(b<0.) then Uex=1. return end if
select case(ivar)
case(1) ! гладкое решение
Uex=cos(pi*b)
case(2) ! решение с разрывом производной
Uex=0.
if(b<0.25) Uex=cos(2*pi*b)
case(3) ! разрывное решение "ступенька" Uex=0.
if(b<0.25) Uex=1. end select
end
32
2. Разберите текст программы «Perenos1» (см. ниже), предназначенной для численного решения задачи (1) – (2). Для оценки точности численного решения в программе вычисляется значение погрешности приближенного решения на каждом слое по времени
n |
M |
n |
|
2 |
, |
h |
vi |
uex(xi ,tn ) |
|
||
|
i 1 |
|
|
|
|
а также максимальная погрешность max max n .
0 n N
3.Напишите процедуры, реализующие численные схемы: для (3) –
процедуру «EXPL_LC», (4) – процедуру «EXPL_LAX», (5) – «EXPL_LW», (6) – «IMPL_LC», (7) – «IMPL_RC», (8) – «IMPL_REC».
Обращения к указанным процедурам присутствуют в программе в закомментированном виде.
4.ИзменяязначениечислаКуранта a /h2 ,убедитесьвдостаточности выполнения условий устойчивости: для явных схем 1, для
(7)– 1. Подтвердите абсолютную устойчивость неявных схем (6) и
(8).Контроль за устойчивостью проводите визуально и по изменению погрешности max .Вотчетеприведитепримерыустойчивогоинеустой-
чивого расчетов.
5. Для случая гладких начальных данных (2а) постройте при 1 зависимости max(h) и сделайте вывод о порядке точности используе-
мых схем.
6. Проведите сравнительный анализ точности схем на кусочно-не- прерывном (2б) (при M 101) и разрывном (2в) (M 201) решении.
program perenos1 use GrafLib parameter(Nx=101)
dimension x(Nx),v(Nx),u(Nx) common c; common ivar
ivar=3 ! вариант начальных данных c=0.1 ! скорость переноса xmax=1.; tmax=5.
h=xmax/(Nx-1) ! шаг по пространству gam=0.8
33
tau=gam*h/c ! шаг по времени print*,' h=',h
print*,' gam=',gam print*,' tau=',tau
Nt=tmax/tau+0.5 ! число шагов по времени
nout=Nt/10 |
! частота вывода |
t=0. |
! начальные данные |
do i=1,Nx |
|
x(i)=(i-1)*h u(i)=Uex(x(i),t) v(i)=u(i)
end do
xgmin=0; xgmax=dble(xmax) ygmin=minval(u); ygmax=1.2*maxval(u) call GrafInit(1,'Convection')
call Axis('x','u,v',4,1d-3) call Grid(5,6,0) delmax=0
do n=0,Nt !! --- цикл по номеру слоя ---
del=sqrt(h*sum((u-v)*(u-v))) ! погрешность на предыдущем слое if(del>delmax)delmax=del
if(mod(n,nout)==0)then ! вывод данных write(*,'(a3,i4,a3,1pe11.4,a4,1pe11.4)')' n=',n,' t=',t,' del=',del call Plot(dble(x),dble(u),1,1,1)
call Plot(dble(x),dble(v),2,1,1) end if
call EXPL_LC(gam,t,x,v,Nx)
!call EXPL_LAX(gam,t,x,v,Nx)
!call EXPL_LW(gam,t,x,v,Nx)
!call IMPL_LC(gam,tau,t,x,v,Nx)
!call IMPL_RC(gam,tau,t,x,v,Nx)
!call IMPL_REC(gam,tau,t,x,v,Nx) t=t+tau
do i=1,Nx u(i)=Uex(x(i),t) end do
end do !! ----------------------------------------
write(*,*)' delmax=',delmax ! максимальная погрешность end
34
Результаты:
h= 9.9999998E-03 gam= 0.8000000 tau= 7.9999998E-02
n= 0 t= 0.0000E+00 del 0.0000E+00 n= 6 t= 4.8000E-01 del 4.4448E-02 n= 12 t= 9.6000E-01 del 5.6850E-02 n= 18 t= 1.4400E+00 del 6.5862E-02 n= 24 t= 1.9200E+00 del 7.3425E-02 n= 30 t= 2.4000E+00 del 8.0171E-02 n= 36 t= 2.8800E+00 del 7.3999E-02 n= 42 t= 3.3600E+00 del 7.7827E-02 n= 48 t= 3.8400E+00 del 8.1889E-02 n= 54 t= 4.3200E+00 del 8.6090E-02 n= 60 t= 4.8000E+00 del 8.4492E-02 delmax= 8.7743960E-02
35
ВОПРОСЫ К РАЗДЕЛУ 3
1.Что такое число Куранта и как оно связано с устойчивостью разностной схемы для гиперболического уравнения?
2.Исследовать устойчивость схемы «левый уголок» при отрицательной скорости переноса.
3.Исследовать устойчивость схемы Лакса при отрицательной скорости переноса.
4.Исследовать устойчивость схемы Лакса–Вендроффа при отрицательной скорости переноса.
5.Исследовать устойчивость неявной схемы «левый уголок» приотрицательной скорости переноса.
6.Исследовать устойчивость неявной схемы «правый уголок» при отрицательной скорости переноса.
7.Исследовать устойчивость неявной схемы «прямоугольник» при отрицательной скорости переноса.
36
4. ЧИСЛЕННОЕ РЕШЕНИЕ НАЧАЛЬНОКРАЕВОЙ ЗАДАЧИ ДЛЯ КВАЗИЛИНЕЙНОГО УРАВНЕНИЯ ПЕРЕНОСА
Получить навыки решения начально-краевой задачи для квазилинейного уравнения переноса методом конечных разностей с помощью собственной программы.
ЗАДАНИЕ
Методом конечных разностей решить начально-краевую задачу
|
u |
|
F (u) |
0, |
|
F (u) |
u2 |
, |
|
xL x xR , |
|
|
0 t tmax, |
|
||||||||||
|
t |
x |
|
|
2 |
|
|
|
|
(1) |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
u(xL ,t) uL . |
|
|
|
|
|
|
|
|
|
|||||||||
u x,0 (x), |
|
|
|
|
|
|
|
|
|
|
||||||||||||||
Исследовать зависимость максимальной погрешности |
|
|||||||||||||||||||||||
|
|
|
|
|
max |
|
|
|
max |
|
|
vn u |
ex |
(x ,t |
n |
) |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
1 i N , 0 n M |
|
i |
|
i |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
приближенного решения vn |
|
от шага сетки |
h |
|
(при фиксированном |
|||||||||||||||||||
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
шаге по времени ) и от (при фиксированном h ). |
|
|||||||||||||||||||||||
Здесь (x) и uex(x,t) |
– начальные данные и точное решение: |
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(x) |
|
|
|
|
|
sin(2 x), |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(2) |
||||
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
sin 2 (x uext) . |
|
|
|
|
||||||||||
|
|
|
|
|
uex |
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
2 |
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
|
|
|
|
|
|
|
|
|
3 |
, x 0, |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
3 |
2x, |
0 x 1, |
|
|
|
|
|
|
|
||||||||
(x) |
|
|
|
|
|
|
|
||||||||||||
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
, |
x 1; |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
3t |
|
|
|
|
|
|
||
|
|
|
, |
|
x |
, |
|
|
|
|
|
||||||||
|
|
|
|
|
2 |
|
2 |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
1 |
3 4t |
|
|
3t |
|
|
|
|
t |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
t |
|
|
: |
|
|
|
|
|
, |
|
|
|
x 1 |
|
, |
|||
2 |
2 4t |
2 |
|
2 |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
t |
|
|
|
||
|
|
|
|
|
, |
|
|
x 1 |
; |
|
|
||||||||
|
uex |
|
|
|
|
|
|
|
|
||||||||||
|
|
2 |
|
|
2 |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
3 |
, |
|
|
x |
1 t |
, |
|
|
|
|||||
|
|
|
1 |
|
2 |
|
|
|
2 |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
t |
|
2 |
: |
|
1 |
|
|
|
|
|
1 |
t |
|
|
|
|||
|
|
|
|
|
, |
|
|
x |
|
; |
|
|
|||||||
|
|
|
|
|
2 |
|
|
|
|
2 |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
x |
u |
L |
, |
x 0, |
|
|||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
uR |
(x 1), x 0; |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, |
x x |
(t), |
|
||||
|
|
|
u |
|
|
|
|||||||
|
|
|
|
L |
(x 1) |
|
S |
|
|
||||
|
u |
|
u |
R |
, x x (t), |
|
|||||||
|
ex |
|
|
|
|
|
|
|
|||||
|
|
1 uRt |
|
|
|
|
S |
|
|||||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
uL |
|
|
|||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
xS |
(t) |
|
|
|
|
1 1 1 |
uRt uLt. |
|||
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
uR |
|
|
|||
(3)
(4)
38
Во всех случаях начальных данных (2)–(4) в решении с течением времени возникает сильный разрыв – ударная волна (УВ), что является серьезным тестом для разностной схемы.
Варианты задания приведены в таблице.
Номер |
Номер |
(x) |
и uex |
xL |
xR |
uL |
uR |
|
варианта |
схемы |
|||||||
|
|
|
|
|
|
|||
1 |
5 |
|
2 |
0 |
1 |
0 |
0 |
|
2 |
6 |
|
3 |
–1 |
3 |
3/2 |
–1/2 |
|
3 |
7 |
|
4 |
–0,1 |
2,9 |
1,1 |
0,1 |
|
4 |
8 |
|
2 |
0 |
1 |
0 |
0 |
|
5 |
9 |
|
3 |
–1 |
3 |
3/2 |
–1/2 |
|
6 |
10 |
|
4 |
–0,2 |
2,8 |
1,2 |
0,1 |
|
7 |
5 |
|
3 |
–1 |
3 |
3/2 |
–1/2 |
|
8 |
6 |
|
4 |
–0,3 |
2,7 |
1,3 |
0,1 |
|
9 |
7 |
|
2 |
0 |
1 |
0 |
0 |
|
10 |
8 |
|
3 |
–1 |
3 |
3/2 |
–1/2 |
|
11 |
9 |
|
4 |
–0,4 |
2,6 |
1,1 |
0,2 |
|
12 |
10 |
|
2 |
0 |
1 |
0 |
0 |
|
13 |
5 |
|
4 |
–0,5 |
2,5 |
1,2 |
0,2 |
|
14 |
6 |
|
2 |
0 |
1 |
0 |
0 |
|
15 |
7 |
|
3 |
–1 |
3 |
3/2 |
–1/2 |
|
16 |
8 |
|
4 |
–0,4 |
2,6 |
1,3 |
0,2 |
|
17 |
9 |
|
2 |
0 |
1 |
0 |
0 |
|
18 |
10 |
|
3 |
–1 |
3 |
3/2 |
–1/2 |
|
19 |
5 |
|
2 |
0 |
1 |
0 |
0 |
|
20 |
6 |
|
3 |
–1 |
3 |
3/2 |
–1/2 |
|
21 |
7 |
|
4 |
–0,3 |
2,7 |
1,1 |
0,3 |
УКАЗАНИЯ
Для численного решения (1) использовать одну из разностных схем: КИР
v |
n 1 |
v |
n |
|
1 |
F n |
|
F n |
, |
vn 0 |
|
|
|
|
|
|
|
|
i 1 |
i |
|
i |
|
0; |
(5) |
||||
i |
i |
|
|
|
F n |
|
|
|
||||||
|
|
|
|
h F n |
, |
vn 0 |
|
|
||||||
|
|
|
|
|
|
|
i |
|
i 1 |
|
i |
|
|
|
39
Мак-Кормака 1
v |
vn |
|
F n |
F n |
|
i |
i |
|
i 1 |
i |
0, |
|
h |
||||
|
|
|
|
|
|
|
|
|
vn 1 |
vn |
v |
/2 |
|
|
F |
|
F |
|
|
|
|
|
|
||||
|
|
|
|
i |
|
i |
i |
|
|
|
|
i |
|
|
|
i 1 |
|
|
0 ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
2h |
|
|
|
|
|
|
|||
Мак-Кормака 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
v |
vn |
F n |
F n |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
i |
|
i |
i |
|
|
i 1 |
|
0, |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
h |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
vn 1 |
vn |
v |
/2 |
|
|
F |
1 |
F |
|
|
|
|
|
|
||||
|
|
|
|
i |
|
i |
i |
|
|
|
|
i |
i |
|
|
0 ; |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
2h |
|
|
|
|
|
|
|||
Лакса–Вендроффа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
vn 1 vin |
|
F n |
|
F n |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
i |
|
|
|
i 1 |
|
|
i 1 |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
2h |
|
|
|
|
|
|
|||
|
|
vn |
vn |
Fin1 Fin vn |
vn |
Fin Fin1 |
|
0; |
||||||||||||||
|
||||||||||||||||||||||
|
4h2 |
i 1 |
i |
|
|
|
|
|
|
|
i |
|
|
|
i 1 |
|
|
|
|
|
|
|
неявная
vin 1 vin Fin 1 Fin11 0;
h
TVD
v |
n 1 |
v |
n |
|
1 |
F n |
|
F n |
, |
|
i |
0 |
|
|
|
|
|
|
|
i 1 |
i |
|
|
|
|
0, |
|||||
i |
i |
|
|
|
F n |
, |
|
|
0 |
|
|||||
|
|
|
|
h F n |
i |
|
|
||||||||
|
|
|
|
|
|
|
i |
|
i 1 |
|
|
|
|
|
|
где |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vn , |
|
v vn |
|
vn 0, |
|||
|
i |
|
|
i 1 |
i |
||
i |
|
F n |
F n |
|
|
|
|
|
|
|
i 1 |
i |
, |
v 0. |
|
|
|
v |
|||||
|
|
|
|
|
|
||
(6a)
(6б)
(7а)
(7б)
(8)
(9)
(10)
40
