Численное решение краевых задач. Учебно-методическое пособие
.pdfВ качестве основы использовать программу «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
