Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Численное решение краевых задач. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
1 Мб
Скачать

Лакса–Ведроффа (явная)

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]