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

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

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

В качестве основы использовать программу «CONV1» (см. ниже), которая решает задачу (1) с начальными данными и точным решением

 

 

uL ,

 

x

0

uex

uL ,

x Dt,

 

(x)

 

x

0

 

 

x Dt

 

 

 

uR ,

 

 

uR ,

 

(задачу Римана) с помощью схемы Лакса (процедура «LAX»)

 

 

vn 1

vn

vn

/2

 

F n

F n

 

 

i

i 1

 

i 1

 

 

 

i 1

 

i 1

0 ,

(11)

 

 

 

 

 

 

 

2h

 

 

 

 

 

 

 

 

 

 

 

Здесь D (uL uR )/2 –скоростьУВ.Выразивиз(11)решениенановом

временном слое vn 1 , получим следующий алгоритм:

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vn 1 u

L

,

 

i 1,

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

vn 1

vin 1 vin 1

 

 

F n

 

F n

,

i 2,...,N

 

.

 

 

 

 

 

 

 

 

 

 

i

2

 

2h

i 1

i 1

 

 

 

x

 

 

 

 

Для расчета потока

F n

на правой границе в узле i N

x

1

ис-

 

 

Nx 1

 

 

 

 

 

 

 

 

 

 

 

 

 

пользуем экстраполированное значение

 

 

 

 

 

 

 

 

 

 

vn

2vn

 

vn

 

.

 

 

 

 

 

(12)

 

 

Nx 1

 

 

Nx

 

Nx 1

 

 

 

 

 

 

 

Этот прием применяем для всех схем второго порядка (6)–(8).

subroutine LAX(tauh,v,Nx) ! shema Laksa common /par1/uL,uR

dimension v(Nx),v1(1:Nx+1) v1(1:Nx)=v v1(Nx+1)=2*v1(Nx)-v1(Nx-1) v(1)=uL

do i=2,Nx v(i)=0.5*(v1(i+1)+v1(i-1)) &

-0.5*tauh*(Flux(v1(i+1))-Flux(v1(i-1))) end do

end

41

Для регуляризации численного решения, полученного по схемам второго порядка (6)–(8), используем явное сглаживание (процедура

«SMOOTHING»)

vi vi (1 2 )vi (vi 1 vi 1),

i 2,...,Nx 1,

10

2

1 .

...10

 

Значение параметра подбираем так, чтобы минимизировать одновременно численное «размазывание» и численную «рябь».

subroutine SMOOTHING(v,Nx,alf) ! sglazhivanie dimension v(Nx),v1(Nx)

v1=v

do i=2,Nx-1 v(i)=(1-2*alf)*v1(i)+alf*(v1(i-1)+v1(i+1)) end do; end

В случае, если точное решение задачи задано неявным образом (2), расчет uex проводим методом простых итераций:

uexk 1 21 sin 2 x uexk t , k 0,1,2,...,

до тех пор, пока

 

uk 1

uk

 

.

 

 

 

 

ex

ex

 

 

СОДЕРЖАНИЕ ОТЧЕТА

1.Постановка задачи с записью уравнения, НУ и ГУ для вашего варианта.

2.Разностная схема и численный алгоритм на ее основе.

3.Текст соответствующей процедуры.

4.Текст главной программы и дополнительных процедур (кроме графического модуля).

5.Текстовые и графические результаты одного запуска программы.

6.Таблицы и графики зависимостей max(h) и max( ). Их анализ и вывод о порядках точности схемы по времени и по пространству.

42

Текст программы «CONV1» и дополнительных процедур:

program Conv1 use GrafLib parameter(Nx=101)

dimension x(Nx),u(Nx),v(Nx) common /par1/uL,uR pi2=8*atan(1.)

xL=-0.1; xR=0.9 h=(xR-xL)/(Nx-1) tmax=1.5; gam=1.0 print*,' h=',h print*,' gam=',gam

uL=1; uR=0 ! nach. dannie t=0.

do i=1,Nx x(i)=xL+(i-1)*h u(i)=Phi(x(i)) v(i)=u(i)

end do

tau=gam*h/maxval(abs(v)) ! nach. shag po vremeni Nt=tmax/tau+0.5 ! chislo shagov po vremeni nout=Nt/10 ! chastota vivoda

xgmin=dble(xL); xgmax=dble(xR) ygmin=minval(u); ygmax=1.2*maxval(u) call GrafInit(1,'Convection')

call Axis('x','u,v',0,2d-3) call GRID(5,6,0) ii=clickmenuqq(QWIN$TILE) delmax=0

write(*,100)

do n=0,Nt ! ------

del=sqrt(h*sum((u-v)*(u-v))) ! porgeshnost na pred. sloe if(del>delmax)delmax=del

if(mod(n,nout)==0)then ! vivod dannih call Xshock(Nx,x,v,xsh) ! koordinata YB write(*,200)n,t,tau,del,xsh

call Plot2(dble(x),dble(u),1,500,2d-3)

43

call Plot2(dble(x),dble(v),4,100,3d-3) end if

tauh=tau/h

call LAX(tauh,v,Nx)

!call KIR(tauh,v,Nx)

!call IMPL(tauh,v,Nx)

!call TVD(tauh,v,Nx)

!call LAXVEN(tauh,v,Nx)

!call MACC1(tauh,v,Nx)

!call MACC2(tauh,v,Nx)

!call SMOOTHING(v,Nx,3e-1) ! sglazhivznie t=t+tau

do i=1,Nx u(i)=Uex(x(i),t) end do

tau=gam*h/maxval(abs(v)) ! novii shag po vremeni end do ! ------

write(*,*)' delmax=',delmax ! maks. porgeshnost ii=SAVEIMAGE_W('v(x,t).bmp',xgmin-0.1,ygmax+0.1,xgmax+0.1,ygmin-0.1) 100 format(4x,'n',6x,'t',10x,'tau',9x,'del',8x,'xsh')

200 format(1x,i4,5(1x,1pe11.4)) end

function Phi(x) ! nach. dannie common /par1/uL,uR Phi=uL

if(x>0) Phi=uR end

function Uex(x,t) ! tochn. reshenie common /par1/uL,uR D=(uL+uR)/2.

if(x<=D*t) then Uex=uL

else Uex=uR end if end

44

function Flux(u) ! potok Flux=u*u/2.

end

subroutine Xshock(Nx,x,v,xsh) ! rashet koord. YB dimension x(Nx),v(Nx)

dvmax=0.0 do i=2,Nx dv=v(i)-v(i-1)

if(abs(dv)>dvmax)then

imax=i

dvmax=abs(dv) end if

end do xsh=x(imax) end

Назначение процедур:

«Phi» – расчет начальных данных (x) , «Uex» – точного решения uex (x,t) ,«Flux»–потока F(u),Xshock»–координатыконечно-разност-

ной УВ.

Пример результатов расчета:

h= 9.9999998E-03

 

 

gam=

1.000000

 

 

n t

tau

del

xsh

0 0.0000E+00 1.0000E-02 0.0000E+00 1.0000E-02 15 1.5000E-01 1.0000E-02 4.9583E-02 8.0000E-02 30 3.0000E-01 1.0000E-02 7.2001E-02 1.5000E-01 45 4.5000E-01 1.0000E-02 7.5193E-02 2.4000E-01 60 6.0000E-01 1.0000E-02 8.5655E-02 3.1000E-01 75 7.5000E-01 1.0000E-02 4.9680E-02 3.8000E-01 90 9.0000E-01 1.0000E-02 6.7818E-02 4.5000E-01 105 1.0500E+00 1.0000E-02 7.5193E-02 5.4000E-01 120 1.2000E+00 1.0000E-02 8.5655E-02 6.1000E-01 135 1.3500E+00 1.0000E-02 4.9680E-02 6.8000E-01 150 1.5000E+00 1.0000E-02 6.7818E-02 7.5000E-01 delmax= 8.5970469E-02

45

ВОПРОСЫ К РАЗДЕЛУ 4

1. Применить схему КИР (5) для расчета вручную численного решения(1) вмомент t 2 при указанных преподавателем дополнительных

условиях.

2. Применить схему Мак-Кормака 1 (6) для расчета вручную численного решения(1) вмомент t 2 приуказанных преподавателем допол-

нительных условиях.

3. Применить схему Мак-Кормака 2 (7) для расчета вручную численного решения(1) вмомент t 2 приуказанных преподавателем допол-

нительных условиях.

4. Применить схему Лакса–Вендроффа (8) для расчета вручную численного решения (1) в момент t 2 при указанных преподавателем до-

полнительных условиях.

5. Применить неявную схему (9) для расчета вручную численного решения (1) в момент t 2 при указанных преподавателем дополни-

тельных условиях.

6. Применить схему TVD (10) для расчета вручную численного решения (1) в момент t 2 при указанных преподавателем дополнительных условиях.

46

5. ЧИСЛЕННОЕ РЕШЕНИЕ КРАЕВОЙ ЗАДАЧИ ДЛЯ УРАВНЕНИЯ ПУАССОНА

ЦЕЛЬ РАБОТЫ

Получить навыки решения краевой задачи для уравнения Пуассона методами конечных разностей и конечных объемов с помощью собственной программы и специализированного ПО.

ЗАДАНИЕ

Методами конечных разностей (МКР) и конечных объемов (МКО) решить задачу Дирихле

2u

 

2u

f (x,y),

0 x 1,

0 y 1,

(1)

x2

y2

 

 

 

 

 

 

u(0, y) 1(y),

u(1, y) 3(y),

(2а)

 

u(x,0) 2(x),

u(x,1) 4(x).

(2б)

Здесь u T T0 – избыточная температура, T0 300 К. Варианты заданий приведены в таблице.

Номер

Правая

 

Граничные значения

 

Точное

вари-

часть

1(y)

 

3(y)

2(x)

4(x)

решение

анта

f (x, y)

 

ue (x, y)

1

2x

0

 

y2

0

x

xy2

2

2

y2

 

1 y2

x

x 1

x y2

3

6xy

0

 

y3

0

x

xy3

 

 

 

47

 

 

 

 

 

 

 

 

Окончание таблицы

 

 

 

 

 

 

 

 

Номер

Правая

 

Граничные значения

 

Точное

вари-

часть

1(y)

 

3(y)

2(x)

4(x)

решение

анта

f (x, y)

 

ue (x, y)

4

6y

y3

 

1 y3

x

x 1

x y3

5

2y2 2x2

0

 

y2

0

x2

x2y2

6

4

y2

 

1 y2

x2

x2 1

x2 y2

7

2y3 6x2 y

0

 

y3

0

x2

x2y3

8

2 6y

y3

 

1 y3

x2

x2 1

x2 y3

9

6xy3 6x3y

0

 

y3

0

x3

x3y3

 

 

 

 

 

 

 

 

10

6x 6y

y3

 

1 y3

x3

x3 1

x3 y3

11

6x

2y

 

1 2y

x3

x3 2

x3 2y

12

4

3y2

 

1 3y2

x2

x2 3

x2 3y2

УКАЗАНИЯ

Задача (1)–(2) описывает стационарное распределение температуры в двумерной области с источником тепла и неравномерно нагретыми границами.

МКР

1.Длярешения(1)–(2)расчетнаяобластьпокрываетсяравномерной

сеткой с шагами hx 1/(Nx 1) и

hy 1/(Ny 1), где Nx и N y

– коли-

чество узлов в направлениях x и

y соответственно. Уравнение (1) ап-

проксимируется разностной схемой второго порядка точности

 

 

vi 1, j 2vi, j

vi 1, j

 

vi, j 1 2vi, j vi, j 1

fi, j .

(3)

 

h2

 

h2

 

x

 

 

y

 

 

48

Для решения сеточных уравнений (3) применяются итерационные методы:

Якоби

 

 

 

vik, j1

1 vik 1, j

vik 1, j 2

vik, j 1

vik, j 1 3 fi, j ;

(4)

 

Зейделя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vik, j1

1 vik 1, j

vik 1,1j 2

vik, j 1

vik, j11 3 fi, j ;

(5)

 

верхней релаксации

 

 

 

 

 

 

 

 

 

 

 

 

 

vik, j1 (1 )vik, j 1 vik 1, j

vik 1,1j 2

vik, j 1

vik, j11 3

fi, j . (6)

 

 

 

1

 

hy2

 

 

 

 

1

 

h2

 

 

 

 

1 hxhy

 

 

Здесь

 

 

 

 

 

,

 

 

 

 

 

x

,

 

 

 

 

 

 

, –

параметр,

 

1

 

2 h2

h2

 

 

2

 

2 h2

h2

 

 

3

 

2 h2 h2

 

 

 

 

 

 

x

y

 

 

 

 

 

x

y

 

 

 

 

 

x

y

 

 

1 2. Расчет по формулам (4) – (6) ведется при k 0 во внутренних

узлах, т. е. при i 2,...,Nx 1,

 

j 2,...,Ny 1. В граничных узлах реше-

ние вычисляется согласно (2):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vk 1 (y

j

),

vk 1

(y

j

),

j 1,...,N

y

;

1, j

1

 

 

 

Nx, j

 

3

 

 

 

 

 

vk 1

 

2

(x ),

vk 1

 

4

(x ),

i 1,...,N

x

.

 

i,1

 

 

 

i

 

i,Ny

 

 

 

i

 

 

 

 

Итерации прекращаются при выполнении условия

 

 

 

 

 

 

 

 

 

max

 

vk 1

vk

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 i Nx

 

 

i, j

 

i, j

 

 

 

 

 

 

 

1 j Ny

Приведем текст процедуры, реализующей метод Якоби:

subroutine Jacobi(Nx,Ny,x,y,f,v,itmax,eps) implicit real*8(a-h,o-z)

dimension & x(Nx),y(Ny),f(Nx,Ny),v(Nx,Ny),v1(Nx,Ny) common /b1/si1,si2,si3

do k=1,itmax v1=v

49

do i=2,Nx-1 do j=2,Ny-1

v(i,j)= !!! самостоятельно по (4) end do

end do dv=maxval(abs(v-v1)) if(dv<eps) exit

end do print*,' Jacobi:'

print*,' it#',k,' dv=',dv end

2. Разберите текст программы Puasson1 (см. ниже), предназначенной для численного решения задачи (1)–(2) при f (x,y) 2 2 cos xsin y ,

1(y) sin y , 3(y) sin y , 2(x) 0, 4(x) 0, имеющей точное решение uex (x,y) cos xsin y . В главной программе организованы об-

ращения кпроцедурамметодов(4)–(6).Дляпроверкиточностисошедше- гося решения vi, j вычисляется погрешность

 

Nx N y

 

 

2

 

 

hxhy

 

,

vi, j uex (xi , y j )

 

 

i 1 j 1

 

 

 

 

выводятся графики приближенного и точного решения вдоль линии y 0,5.

program Puasson1 use GrafLib

parameter(Nx=11,Ny=11)

dimension x(Nx),y(Ny),v(Nx,Ny),u(Nx,Ny) real*8 xg(Nx),yg(Nx),zg(Nx)

common /b1/si1,si2,si3 common /b2/pi open(10,file='mkr_out.dat') pi=4.*atan(1.)

xmax=1.; ymax=1. hx=xmax/(Nx-1); hy=ymax/(Ny-1) hx2=hx**2; hy2=hy**2

50

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