Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
С. Д. Алгазин
Препринт № 805
Москва 2006 г.
Аннотация.
The abstract.
2
Введение.
∂v 2 ∂v 2 ∂v 2 1 ∂p
(1.2) v1 + v2 + v3 =− + ν∇ 2 v 2 ,
∂x1 ∂x2 ∂x3 ρ ∂x2
3
∂v 3 ∂v 3 ∂v 3 1 ∂p
(1.3) v1 + v2 + v3 =− + ν∇ 2 v 3 ,
∂x1 ∂x2 ∂x3 ρ ∂x3
∂v1 ∂v 2 ∂v 3
(1.4) + + =0 .
∂x1 ∂x2 ∂x3
∂v 2 ∂v 2 ∂v 2 ∂p 1 2 2
(1.6) v1 + v2 + v3 =− + ∇v ,
∂x1 ∂x2 ∂x3 ∂x2 Re
∂v 3 ∂v 3 ∂v 3 ∂p 1 2 3
(1.7) v1 + v2 + v3 =− + ∇v ,
∂x1 ∂x2 ∂x3 ∂x3 Re
∂v1 ∂v 2 ∂v 3
(1.8) + + = 0,
∂x1 ∂x2 ∂x3
1 ν
где = - безразмерный параметр, Re – число Рейнольдса.
Re La v∞
Таким образом, для определения параметров потока, вектора скорости (v1,
v2, v3) и давления р требуется найти решение системы уравнений (1.5) - (1.8),
удовлетворяющее следующим граничным условиям:
U(x1,x2,x3)=U(vcosφ,vsinφ,u)
∂U ∂U ∂U 1 ∂U
= α cos ϕ + β cos ϕ − sin ϕ
∂x1 ∂r ∂θ v ∂ϕ
∂U ∂U ∂U 1 ∂U
(1.10) = α sin ϕ + β sin ϕ + cos ϕ
∂x2 ∂r ∂θ v ∂ϕ
∂U rvθ′ ∂U rvr′ ∂U
= 2 − 2
∂x3 w ∂r w ∂θ
В результате получаем:
5
(1.11)
rvθ′ ∂v1 3 rvr′ ∂v
1
(v α cos ϕ + v α sin ϕ + v 2 )
1 2 3
+ (v β cos ϕ + v β sin ϕ − v 2 )
1 2
+
w ∂r w ∂θ
1 1 ∂v1 ∂p ∂p 1 ∂p 1 2 1
+ (− sin ϕ v1 + cos ϕ v 2 ) + ( α cos ϕ + β cos ϕ − sin ϕ )= ∇v;
v v ∂ϕ ∂r ∂θ v ∂ϕ Re
(1.12)
rvθ′ ∂v 2 3 rvr′ ∂v
2
(v1α cos ϕ + v 2α sin ϕ + v 3 ) + ( v1
β cos ϕ + v 2
β sin ϕ − v ) +
w2 ∂r w2 ∂θ
1 1 ∂v 3 ∂p ∂p 1 ∂p 1 2 2
+ (− sin ϕv1 + cos ϕv 2 ) + ( α sin ϕ + β sin ϕ + cos ϕ )= ∇v ;
v v ∂ϕ ∂r ∂θ v ∂ϕ Re
rvθ′ ∂v 3 3 rvr′ ∂v
3
(v1α cos ϕ + v 2α sin ϕ + v 3 ) + ( v1
β cos ϕ + v 2
β sin ϕ − v ) +
w2 ∂r w2 ∂θ
(1.13)
1 1 ∂v 3 rv′ ∂p rvr′ ∂p 1 2 3
+ (− sin ϕv1 + cos ϕv 2 ) + ( θ2 − 2 )= ∇v;
v v ∂ϕ w ∂r w ∂θ Re
6
r ∂ ∂v i ∂ v ∂v i 1 ∂ 2v i
(1.18) ∆v i = rv + + 2 .
vw2 ∂ ∂ ∂θ r ∂θ v ∂ϕ
2
r r
∑
l '
2
(2.1) H= Λ k ⊗ hk , L = 2l + 1.
L
k =0
2π (i − j )
hkij = cos k , (i, j = 1,2,..., L);
L
Λk матрица дискретного оператора, соответствующего дифференциальному
оператору
r ∂ ∂Φ ∂ v ∂Φ k 2
(2.2) rv + − 2 Φ , k = 0,1,..., l
vw2 ∂r ∂r ∂θ r ∂θ v
с краевыми условиями
∑
n
Tn ( x) gν 1
g (θ ) = , y= (2θ − π ),
(−1) ν −1
π
(2.4) ν =1 n ( y − yν )
sin ε ν
gν = g (θ ν ),ν = 1,2,..., n; Tn ( x) = cos (narccos( x)).
7
Первую и вторую производные по θ, входящие в соотношения (2.2), получим
дифференцированием интерполяционной формулы (2.4).
По r выберем сетку, состоящую из m узлов:
1 (2ν − 1)π
rν = ( zν + 1), zν = cos χν , χν = , ν = 1,2,..., m,
2 2m
∑
m
Tm (r )(r − 1)rq k
(2.5) q (r ) = , qν = q (rν ), z = 2r − 1.
(−1)ν −1
ν =1 m (rν − 1)rν ( z − zν )
sin χν
Первую и вторую производные по r, входящие в выражение (2.2), найдем
дифференцированием интерполяционной формулы (2.5). Дифференцированием
интерполяционных формул (2.4), (2.5) получим значения производных по θ и r,
входящих в левую часть уравнения неразрывности (1.14).
Для дискретизации производных от давления по r используем интер-
поляционную формулу
∑
m
Tm (r )rqν
(2.6) q(r ) = .
(−1)ν −1
ν =1 m rν ( z − zν )
sin χν
Величины, входящие в формулу (2.6), определены выше. Значения
первой производной от давления по r, входящие в левую часть соотношений
(1.11)-(1.13), получим дифференцированием интерполяционной формулы (2.6).
Для построения формулы численного дифференцирования по φ рас-
смотрим интерполяционную формулу
∑
2l
2
s (ϕ ) = Dl (ϕ − ϕ k ) s k , L = 2l + 1, s k = s (ϕ k ),
L
k =0
∑
l
Dl (ϕ − ϕ k ) = 0,5 + cos j (ϕ − ϕ k ).
j =1
Обозначим:
rvθ′
(3.1) A(1) = A(1) (v1 , v 2 , v 3 ) = v1α cos ϕ + v 2α sin ϕ + v 3 ;
w2
rvr′
(3.2) A( 2 ) = A( 2 ) (v1 , v 2 , v 3 ) = v1β cos ϕ + v 2 β sin ϕ − v 3 ;
w2
1 1
(3.3) A(3) = A(3) (v1 , v 2 , v 3 ) = − sin ϕ v1 + cosϕ v 2 .
v v
Где α и w2 определены в (1.10). Делаем замену (1.15) и вводим новые
обозначения:
rv′
A (1) = A (1) (v1 , v 2 , v3 ) = (1 − r )v∞1 α cos φ + (1 − r )v∞2 α sin φ + (1 − r )v∞3 θ2 +
w
(3.4)
rv′
+ v1α cos φ + v 2α sin φ + v 3 θ2 ;
w
rv′
A (2) = A (2) (v1 , v 2 , v 3 ) = (1 − r )v∞1 β cos φ + (1 − r )v∞2 β sin φ − (1 − r )v∞3 2r +
w
(3.5)
rv′
+ v1β cos φ + v 2 β sin φ − v 3 2r ;
w
1 1
A (3) =A (3) (v1 , v 2 , v 3 ) =
− sin φ (1 − r )v∞1 + cos φ (1 − r )v∞2 −
v v
(3.6)
1 1
− sin φ v1 + cos φ v 2 .
v v
(3.7)
m n 2l m
Aνµ(1)k (−v∞1 + ∑ Dµµ v ) + Aνµ(2)k (∑ Dνν(θ1) vν11µ k ) + Aνµ(3)k ( ∑ Dkk(φ1) vνµ
(r ) 1
1 νµ1k
1
k1 ) + α µν co φk ( ∑
( pr )
s Dµµ 1
pνµ1k ) +
=µ1 1 =ν1 1 =k1 0 =µ1 1
2l n
1 1 n m 2l
+ β µν cos φk (∑ Dνν(θ1) pν1µ k ) −
sin φk ( ∑ Dkk(φ1) pνµ k1 ) − (∑ ∑ ∑ Hνµ k ,ν1µ1k1 vν11µ1k1 −
=ν1 1 =vµν k1 0 Re ν=1 1 µ=1 1 =k1 0
r v′
− 2
(1 + r r ) v∞1 ),
w v r = rµ
θ =θν
9
(3.8)
m n 2l m
Aνµ(1)k (−v∞2 + ∑ Dµµ v€ ) + Aνµ(2)k (∑ Dνν(θ1) v€ν21µ k ) + Aνµ(3)k ( ∑ Dkk(φ1) vνµ2 k1 ) + α µν sin φk ( ∑ Dµµ
(r ) 2
1 νµ1k
( pr )
1
pνµ1k ) +
=µ1 1 =ν1 1 =k1 0 =µ1 1
2l n
1 1 n m 2l
+ β µν sin φk (∑ Dνν(θ1) pν1µ k ) +
cos φk ( ∑ Dkk(φ1) pνµ k1 ) − (∑ ∑ ∑ Hνµ k ,ν1µ1k1 vν21µ1k1 −
=ν1 1 =vµν k1 0 Re ν=1 1 µ=1 1 =k1 0
r v′
− 2
(1 + r r ) v∞2 ),
w v r = rµ
θ =θν
(3.9)
m n 2l
rv′ m
Aνµ(1)k (−v∞3 + ∑ Dµµ v ) + Aνµ(2)k (∑ Dνν(θ1) vν31µ k ) + Aνµ(3)k ( ∑ Dkk(φ1) vνµ3 k1 ) + θ2
(r ) 3
1 νµ1k
( ∑ Dµµ( pr )
pνµ1k ) −
= µ1 1 = ν1 1 = k1 0 = w r = rµ µ1 1
1
θ =θν
rvr′ n
1 n
r m 2l
v′
2
(∑ Dνν(θ1) pν1µ k ) −
− (∑ ∑ ∑ Hνµ k ,ν1µ1k1 vν31µ1k1 − 2 (1 + r r ) v∞3 ),
=w r = rµ ν1 1 = Re =
ν1 1 =
µ1 1 k1 0 w v r = rµ
θ =θν θ =θν
2l m n
1
α µν cos φk ( ∑ Dµµ
sin φ ( vνµ k ) + β µν cos φk (∑ Dνν(θ ) vν1 µ k ) −
k ∑ Dkk1 vνµ k1 ) +
(φ ) 1
(r ) 1
=
1
µ1 1 =
1 1
ν1 1 =
1
vµν k1 0
m n 2l
1
+α µν sin φk ( ∑ Dµµ v ) + β µν sin φk (∑ Dνν(θ1) vν21µ k ) +
(r ) 2
1 νµ1k
cos φk ( ∑ Dkk(φ1) vνµ2 k1 ) +
= µ1 1 = ν1 1 = vµν k1 0
(3.10) rv′ m
rvr′ n
+ θ2 ( ∑ Dµµ
( pr ) 3
vνµ1k
) − 2
( ∑ Dνν(θ1) vν3 µk ) − (v∞1 α µν cos φk + v∞2 α µν sin φk +
= w r = rµ µ1 1 = 1
w r = rµ ν1 1 1
θ =θν θ =θν
rvθ′
+v∞3 )=
0.
w2 r = rµ
θ =θν
10
DIMENSION V1T(N),V1TS(N),V1TP(N)
DIMENSION V1F(0:L),V1FS(0:L),V1FP(0:L)
DIMENSION DB1(N,N),DB2(N,N)
DIMENSION DL1(M,M),DL2(M,M)
DIMENSION C0(NT,NT),C1(NT,NT),C2(NT,NT),C3(NT,NT),C4(NT,NT)
DIMENSION H(NG,NG),X(NG),Y(NG),Z(NG)
DIMENSION CT(M,N),CR(M,N),CH(M,N)
DIMENSION AL(M,N),BE(M,N),CF(0:L),SF(0:L)
COMMON /EL/ A,B,RLA
COMMON /VEL/ VB(3),RE
DATA PI/3.141592653589D0/,RE/0.1D0/,VB/1.D0,0.D0,0.D0/
C RE=0.1D0
WRITE(*,*) ' RE = ',RE
C PI=3.141592653589D0
CALL DIFR22 (DPR,M,0.D0,0.D0,DL)
CALL DIFR1 (DR,M,0.D0)
CALL DIFT1(DT,N)
CALL DIFF(DF,L)
A=1.D0
B=1.D0
B=0.5d0
RLA=A
NU=1
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
WRITE (*,*) T1
K=1
F1=2.D0*PI*K/(L+1)
WRITE (*,*) F1
DO MU=1,M
R1=(1.D0+COS((2.D0*MU-1.D0)*PI/2.D0/M))/2.D0
P(MU)=1.5D0*(R1**2)*SIN(T1)*COS(F1)/RE
P1(MU)=3.D0*R1*SIN(T1)*COS(F1)/RE
ENDDO
WRITE (*,*) 'The exact solution'
WRITE (*,*) P1
DO MU=1,M
P2(MU)=0.D0
DO MU1=1,M
P2(MU)=P2(MU)+DPR(MU,MU1)*P(MU1)
ENDDO
ENDDO
WRITE (*,*) 'Approximate solution'
WRITE (*,*) P2
PAUSE
DO MU=1,M
R1=(1.D0+COS((2.D0*MU-1.D0)*PI/2.D0/M))/2.D0
V1 (MU)=-0.75D0*(R1-R1**2)*COS(T1)**2*COS(F1)+0.25D0*R1-
-0.25D0*R1**3
V1S(MU)=-0.75D0*(1.D0-2.D0*R1)*COS(T1)**2*COS(F1)+0.25D0-
-0.75D0*R1**2
ENDDO
WRITE (*,*) 'The exact solution'
WRITE (*,*) V1S
DO MU=1,M
P2(MU)=0.D0
DO MU1=1,M
P2(MU)=P2(MU)+DR(MU,MU1)*V1(MU1)
ENDDO
ENDDO
WRITE (*,*) 'Approximate solution'
11
WRITE (*,*) P2
PAUSE
MU=1
R1=(1.D0+COS((2.D0*MU-1.D0)*PI/2.D0/M))/2.D0
DO NU=1,N
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
V1T(NU)=-0.75D0*(R1-R1**2)*COS(T1)**2*COS(F1)+0.25D0*R1-
-0.25D0*R1**3
V1TS(NU)=0.75D0*(R1-R1**2)*2.D0*COS(T1)*SIN(T1)*COS(F1)
ENDDO
WRITE (*,*) 'The exact solution'
WRITE (*,*) V1TS
DO NU=1,N
V1TP(NU)=0.D0
DO NU1=1,N
V1TP(NU)=V1TP(NU)+DT(NU,NU1)*V1T(NU1)
ENDDO
ENDDO
WRITE (*,*) 'Approximate solution'
WRITE (*,*) V1TP
PAUSE
NU=1
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
MU=1
R1=(1.D0+COS((2.D0*MU-1.D0)*PI/2.D0/M))/2.D0
DO K=0,L
F1=2.D0*PI*K/(L+1)
V1F(K)=-0.75D0*(R1-R1**2)*COS(T1)**2*COS(F1)+0.25D0*R1-
-0.25D0*R1**3
V1FS(K)=0.75D0*(R1-R1**2)*COS(T1)**2*SIN(F1)
ENDDO
WRITE (*,*) 'The exact solution'
WRITE (*,*) V1FS
DO K=0,L
V1FP(K)=0.D0
DO K1=0,L
V1FP(K)=V1FP(K)+DF(K,K1)*V1F(K1)
ENDDO
ENDDO
WRITE (*,*) 'Approximate solution'
WRITE (*,*) V1FP
C Дискретный Лапласиан
EPS0=0.D0
CALL MLKG6 (C0,0,DL1,DL2,DB1,DB2,M,N,NT,EPS0)
CALL NMATR(NT,C0,BNORM)
WRITE (*,*) 'BNORM = ',BNORM
CALL MLKG6 (C1,1,DL1,DL2,DB1,DB2,M,N,NT,EPS0)
CALL NMATR(NT,C1,BNORM)
WRITE (*,*) 'BNORM = ',BNORM
CALL MLKG6 (C2,2,DL1,DL2,DB1,DB2,M,N,NT,EPS0)
CALL NMATR(NT,C2,BNORM)
WRITE (*,*) 'BNORM = ',BNORM
CALL MLKG6 (C3,3,DL1,DL2,DB1,DB2,M,N,NT,EPS0)
CALL NMATR(NT,C3,BNORM)
WRITE (*,*) 'BNORM = ',BNORM
CALL MLKG6 (C4,4,DL1,DL2,DB1,DB2,M,N,NT,EPS0)
CALL NMATR(NT,C4,BNORM)
WRITE (*,*) 'BNORM = ',BNORM
C CALL HMATR2(H,NT,L+1,C0,C1)
C CALL HMATR3(H,NT,L+1,C0,C1,C2)
12
C CALL HMATR4(H,NT,L+1,C0,C1,C2,C3)
CALL HMATR5(H,NT,L+1,C0,C1,C2,C3,C4)
NM=L/2
CALL RASPAK (H,NT,NM)
CALL TRANSP (H,NG)
C
I=0
DO NU=1,N
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
DO MU=1,M
R1=(1.D0+COS((2.D0*MU-1.D0)*PI/2.D0/M))/2.D0
DO K=0,L
F1=2.D0*PI*K/(L+1)
I=I+1
X(I)=-0.75D0*(R1-R1**2)*COS(T1)**2*COS(F1)+0.25D0*R1-
-0.25D0*R1**3
Y(I)=1.5D0*R1**4*(COS(T1)**2*COS(F1)-R1)+
+1.5D0*R1**3*(1.D0-R1)*(2.D0*COS(T1)**2-SIN(T1)**2)*COS(F1)+
+0.75D0*R1**3*(1.D0-R1)*COS(F1)*COS(T1)**2/SIN(T1)**2
ENDDO
ENDDO
ENDDO
OPEN (4,FILE='NOUT')
WRITE (4,*) 'The exact solution'
WRITE (4,*) Y
DO 1 K=1,NG
S=0.D0
DO 2 J=1,NG
2 S=S+H(K,J)*X(J)
1 Z(K)=S
WRITE (4,*) 'Approximate solution'
WRITE (4,*) Z
CALL NORM(NG,Y-Z,RNORM)
WRITE (*,*) 'RNORM =',RNORM
C Вычисление начальных данных для решения системы нелинейных
C уравнений
DO NU=1,N
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
DO MU=1,M
R1=(1.D0+COS((2.D0*MU-1.D0)*PI/2.D0/M))/2.D0
CT(MU,NU)=R1*VT(R1,T1)/W2(R1,T1)
CR(MU,NU)=R1*VR(R1,T1)/W2(R1,T1)
CH(MU,NU)=-R1*(1.D0+R1*VR(R1,T1)/V(R1,T1))/W2(R1,T1)
AL(MU,NU)=-R1*UT(R1,T1)/W2(R1,T1)
BE(MU,NU)=1./VT(R1,T1)+R1*UT(R1,T1)*VR(R1,T1)/VT(R1,T1)/W2(R1,T1)
ENDDO
ENDDO
DO K=0,L
F1=2.D0*PI*K/(L+1)
CF(K)=COS(F1)
SF(K)=SIN(F1)
ENDDO
C Запись на диск
OPEN (5,FILE='MATR3E')
WRITE(5,*) N,M,L,NT,NG
WRITE(5,*) DPR
WRITE(5,*) DR
WRITE(5,*) DT
WRITE(5,*) DF
WRITE(5,*) H
13
WRITE(5,*) CT
WRITE(5,*) CR
WRITE(5,*) CH
WRITE(5,*) AL
WRITE(5,*) BE
WRITE(5,*) CF
WRITE(5,*) SF
WRITE(5,*) VB,PI,RE
WRITE(*,*) 'The end of record on a disk'
STOP
END
FUNCTION V(R,T)
IMPLICIT REAL*8 (A-H,O-Z)
COMMON /EL/ A,B,RLA
V=0.5D0*((A-B)*R - (A+B)/R)*SIN(T)
V =V /RLA
RETURN
END
FUNCTION W2(R,T)
IMPLICIT REAL*8 (A-H,O-Z)
COMMON /EL/ A,B,RLA
W2=0.25D0*((A-B)*R+(A+B)/R)**2*SIN(T)**2+
+0.25D0*((A-B)*R-(A+B)/R)**2*COS(T)**2
W2=W2/RLA**2
RETURN
END
FUNCTION UT(R,T)
IMPLICIT REAL*8 (A-H,O-Z)
COMMON /EL/ A,B,RLA
UT=-0.5D0*((A-B)*R + (A+B)/R)*SIN(T)
UT=UT/RLA
RETURN
END
FUNCTION VT(R,T)
IMPLICIT REAL*8 (A-H,O-Z)
COMMON /EL/ A,B,RLA
VT=0.5D0*((A-B)*R - (A+B)/R)*COS(T)
VT=VT/RLA
RETURN
END
FUNCTION VR(R,T)
IMPLICIT REAL*8 (A-H,O-Z)
COMMON /EL/ A,B,RLA
VR=0.5D0*( A-B + (A+B)/R**2)*SIN(T)
RETURN
END
SUBROUTINE NORM(N,Y,RNORM)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Y(1)
RNORM=0.D0
DO 1 J=1,N
IF(ABS(Y(J)).GT.RNORM) RNORM=ABS(Y(J))
1 CONTINUE
RETURN
END
SUBROUTINE NMATR (N,A,BNORM)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION A(N,N)
BNORM = 0.D0
DO 1 I=1,N
14
C=0.D0
DO 2 J=1,N
2 C=C+ABS(A(I,J))
IF (C.GT.BNORM) BNORM=C
1 CONTINUE
RETURN
END
C
SUBROUTINE HMATR2(H,M,N,C0,C1)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION H(1),C0(M,M),C1(M,M)
PI=3.141592653589D0
NM=(N+1)/2
I0=0
DO 1 NU=1,M
DO 1 MU=1,M
DO 1 L=1,NM
I0=I0+1
1 H(I0)=C0(NU,MU)/N
I0=0
DO 3 NU=1,M
DO 3 MU=1,M
I2=0
DO 3 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C1(NU,MU)*COS(1*2.D0*PI*I2/N)
3 I2=I2+1
RETURN
END
C
SUBROUTINE HMATR3(H,M,N,C0,C1,C2)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION H(1),C0(M,M),C1(M,M),C2(M,M)
PI=3.141592653589D0
NM=(N+1)/2
I0=0
DO 1 NU=1,M
DO 1 MU=1,M
DO 1 L=1,NM
I0=I0+1
1 H(I0)=C0(NU,MU)/N
I0=0
DO 3 NU=1,M
DO 3 MU=1,M
I2=0
DO 3 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C1(NU,MU)*COS(1*2.D0*PI*I2/N)
3 I2=I2+1
I0=0
DO 4 NU=1,M
DO 4 MU=1,M
I2=0
DO 4 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C2(NU,MU)*COS(2*2.D0*PI*I2/N)
4 I2=I2+1
RETURN
END
15
C
SUBROUTINE HMATR4(H,M,N,C0,C1,C2,C3)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION H(1),C0(M,M),C1(M,M),C2(M,M),C3(M,M)
PI=3.141592653589D0
NM=(N+1)/2
I0=0
DO 1 NU=1,M
DO 1 MU=1,M
DO 1 L=1,NM
I0=I0+1
1 H(I0)=C0(NU,MU)/N
I0=0
DO 3 NU=1,M
DO 3 MU=1,M
I2=0
DO 3 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C1(NU,MU)*COS(1*2.D0*PI*I2/N)
3 I2=I2+1
I0=0
DO 4 NU=1,M
DO 4 MU=1,M
I2=0
DO 4 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C2(NU,MU)*COS(2*2.D0*PI*I2/N)
4 I2=I2+1
I0=0
DO 5 NU=1,M
DO 5 MU=1,M
I2=0
DO 5 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C3(NU,MU)*COS(3*2.D0*PI*I2/N)
5 I2=I2+1
RETURN
END
C
SUBROUTINE HMATR5(H,M,N,C0,C1,C2,C3,C4)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION H(1),C0(M,M),C1(M,M),C2(M,M),C3(M,M),C4(M,M)
PI=3.141592653589D0
NM=(N+1)/2
I0=0
DO 1 NU=1,M
DO 1 MU=1,M
DO 1 L=1,NM
I0=I0+1
1 H(I0)=C0(NU,MU)/N
I0=0
DO 3 NU=1,M
DO 3 MU=1,M
I2=0
DO 3 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C1(NU,MU)*COS(1*2.D0*PI*I2/N)
3 I2=I2+1
I0=0
DO 4 NU=1,M
16
DO 4 MU=1,M
I2=0
DO 4 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C2(NU,MU)*COS(2*2.D0*PI*I2/N)
4 I2=I2+1
I0=0
DO 5 NU=1,M
DO 5 MU=1,M
I2=0
DO 5 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C3(NU,MU)*COS(3*2.D0*PI*I2/N)
5 I2=I2+1
I0=0
DO 6 NU=1,M
DO 6 MU=1,M
I2=0
DO 6 K=1,NM
I0=I0+1
H(I0)=H(I0)+(2.D0/N)*C4(NU,MU)*COS(4*2.D0*PI*I2/N)
6 I2=I2+1
RETURN
END
Примечание.
program nseq3d06
use dfimsl
IMPLICIT REAL(8) (A-H,O-Z)
integer(4), parameter :: np = 3600 ! np - число уравнений
integer(4) :: itmax = 200 ! Максимально допустимое число
итераций
17
real(8):: x(np), xguess(np), errrel, fnorm, f(np)
external fcn ! Обязательный атрибут для fcn
Common /matrix/ DPR(10,10),DR(10,10),DT(10,10),DF(0:8,0:8),
&
H(900,900),CT(10,10),CR(10,10),CH(10,10),
&
AL(10,10),BE(10,10),CF(0:8),SF(0:8),VB(3),
&
PI,RE,N,M,L,NT,NG
COMMON /EL/ A,B,RLA
A=1.D0
B=1.D0
B=0.5d0
RLA=A
! Считывание с диска начальных данных
OPEN (5,FILE='MATR3E')
READ(5,*) N,M,L,NT,NG
READ(5,*) DPR
READ(5,*) DR
READ(5,*) DT
READ(5,*) DF
READ(5,*) H
READ(5,*) CT
READ(5,*) CR
READ(5,*) CH
READ(5,*) AL
READ(5,*) BE
READ(5,*) CF
READ(5,*) SF
READ(5,*) VB,PI,RE
! Считывание числа Рейнольдса
WRITE (*,*) 'Re = ?'
READ (*,*) RE
! Задание вектора скорости в бесконечности
VB(1)=1.0d0/sqrt(3.0d0)
VB(2)=1.0d0/sqrt(3.0d0)
VB(3)=1.0d0/sqrt(3.0d0)
! Расчёт начального приближения
I=0
DO NU=1,N
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
DO MU=1,M
R1=(1.D0+COS((2.D0*MU-1.D0)*PI/2.D0/M))/2.D0
DO K=0,L
F1=2.D0*PI*K/(L+1)
I=I+1
xguess(I)=-0.75D0*(R1-R1**3)*SIN(T1)**2*COS(F1)**2+0.25D0*R1-0.25D0*R1**3
xguess(NG+I)=-0.75D0*(R1-R1**3)*SIN(T1)**2*COS(F1)*SIN(F1)
xguess(2*NG+I)=0.75D0*(R1-R1**3)*SIN(T1)*COS(T1)*COS(F1)
xguess(3*NG+I)=1.5D0*R1**2*SIN(T1)*COS(F1)/RE
ENDDO
ENDDO
ENDDO
! Проверка fcn
OPEN (4,FILE='NOUT')
WRITE (4,*) 'Re = ', RE
WRITE (4,*) 'N = ', N, 'M = ', M, 'L = ',L, 'NG = ', NG
WRITE (4,*) 'V = ',VB
call fcn(xguess, f, np)
CALL NORM1(NP,f,RNORM,IK)
18
WRITE (*,*) 'IK = ',IK, 'RNORM = ',RNORM
WRITE (4,*) 'RNORM = ',RNORM
write (4,*) f
!xguess = 1.0d0 ! Начальное приближение
errrel = 0.001d0 ! Относительная ошибка
! Поиск решения
call dneqnf(fcn, errrel, np, itmax, xguess, x, fnorm)
CALL NORM(NP,X-XGUESS,RNORM)
WRITE (4,*) 'RNORM = ',RNORM
WRITE (4,*) 'Приближённое решение'
WRITE (4,*) X
call dwrrrn('x', 1, np, x, 1, 0) ! Вывод результата
print *, 'fnorm', fnorm
! Файл для Tecplot
open (7,file='Vel.dat')
write (7,*) 'TITLE = "Velocity"'
write (7,*) 'VARIABLES = "X","Y","Z","Vx","Vy","Vz"'
write (7,*) 'ZONE I=10, J =10, K = 9, F=point'
I=0
DO NU=1,N
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
DO MU=1,M
R1=(1.D0+COS((2.D0*MU-1.D0)*PI/2.D0/M))/2.D0
DO K=0,L
F1=2.D0*PI*K/(L+1)
I=I+1
write (7,12) V(R1,T1)*COS(F1), V(R1,T1)*SIN(F1), U(R1,T1), &
X(I), X(NG+I), X(2*NG+I)
ENDDO
ENDDO
ENDDO
12 FORMAT (1X6E12.3)
!cx0=cx(Re,pi,m,n,l,NG,x)
!write (*,*) 'cx = ',cx0
! Проверка сиимметричности давлениия на сфере
write (4,*) 'Проверка сиимметричности давлениия на сфере'
K=0
DO NU=1,N
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
S2=0.d0
DO MU=1,M
Xmu=COS((2.D0*MU-1.D0)*PI/2.D0/M)
I1=IND(NU,MU,K,M,L)
cnu=0.5d0
Teta=(2.D0*MU-1.D0)*PI/2.D0/M
do Lm=1,M-1
cnu=cnu+cos(Lm*Teta)
enddo
S2=S2+x(3*NG+I1)*cnu/(Xmu+1.d0)
ENDDO
p=4.d0*S2/m
write (4,*) p
enddo
stop
end program nseq3d06
subroutine fcn(x, f, np) ! Следует обратить внимание на
порядок
IMPLICIT REAL(8) (A-H,O-Z)
integer(4):: n ! следования параметров
подпрограммы/сл,
19
real(8):: x(np), f(np) ! иной, чем в случае NEQBF
SUBROUTINE NORM(N,Y,RNORM)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Y(1)
RNORM=0.D0
DO 1 J=1,N
IF(ABS(Y(J)).GT.RNORM) RNORM=ABS(Y(J))
23
1 CONTINUE
RETURN
END
function cx(Re,pi,m,n,L,NG,x)
implicit real(8) (a-h,o-z)
dimension x(1),c(100)
c1=0.d0
call cnu0pi(c,n)
DO K=0,L
F1=2.D0*PI*K/(L+1)
DO NU=1,N
T1=PI*(1.D0+COS((2.D0*NU-1.D0)*PI/2.D0/N))/2.D0
S1=0.d0
S2=0.d0
S3=0.d0
S4=0.d0
DO MU=1,M
Xmu=COS((2.D0*MU-1.D0)*PI/2.D0/M)
I1=IND(NU,MU,K,M,L)
cnu=0.5d0
Teta=(2.D0*MU-1.D0)*PI/2.D0/M
do Lm=1,M-1
cnu=cnu+cos(Lm*Teta)
enddo
S1=S1+x(I1)*cnu/(Xmu**2-1.d0)
S2=S2+x(NG+I1)*cnu/(Xmu**2-1.d0)
S3=S3+x(2*NG+I1)*cnu/(Xmu**2-1.d0)
S4=S4+x(3*NG+I1)*cnu/(Xmu+1.d0)
ENDDO
v1= 8.d0*S1/m
v2= 8.d0*S2/m
v3= 8.d0*S3/m
p = 4.d0*S4/m
f=-((((-1.d0+v1)*(sin(t1)**3*cos(f1)**2-cos(2.0d0*t1)*sin(t1))+ &
v2*(sin(t1)**3*sin(f1)*cos(f1))+ &
v3*(sin(t1))**2*cos(t1)*cos(f1)))/Re-p*sin(t1)**2*cos(f1))
c1=c1+4.0d0*c(nu)*f/(L+1)
ENDDO
enddo
cx=c1
return
end
subroutine cnu0pi(c,n)
implicit real(8) (a-h,o-z)
dimension c(n)
pi=3.141592653589d0
do nu=1,n
c(nu)=1.d0
!c(nu)=0.5d0
do L=2,n-1,2
psi=(2.d0*nu-1.d0)*pi/2.d0/n
c(nu)=c(nu)-2.d0*cos(L*psi)/(L*L-1.d0)
enddo
c(nu)=c(nu)*pi/n
enddo
return
end
24
Примечание.
Рассчитан на заданную сетку N=10, M=10, L=8 т.е. 900 узлов. Для
другой сетки его нужно изменить. Размерности этих массивов указаны в
начале программы tmdif3. Такой же Common блок нужно вставить в
подпрограмму fcn.
Re = 0.100000000000000
N = 10 M = 10 L = 8 NG = 900
RNORM = 0.566755745666508
RNORM = 2.25381742979672
cx = 53.8017245092719
Проверка сиимметричности давлениия на сфере
-0.464867003921752
2.09663620129077
6.82615431488980
12.6380318842517
16.9072430508266
16.9072430535427
12.6380318818960
6.82615431664222
2.09663619981290
-0.464867021216389
Re = 0.100000000000000
25
N = 10 M = 10 L = 6 NG = 700
RNORM = 2.32067064202368
-0.120512235605826
2.10077742253847
6.84477268185351
12.5867321080440
16.6535038683932
16.6535038696520
12.5867321087336
6.84477268206215
2.10077742240610
-0.120512248406545
Re = 1.00000000000000
N = 10 M = 10 L = 8 NG = 900
RNORM = 0.566758188624022
RNORM = 1.85622433788941
cx = 10.9165911137733
-0.619143146838573
-0.154977616032801
0.761356439605746
2.16553300886520
3.37968089966430
3.37968090290760
2.16553301336521
0.761356439061879
-0.154977618272468
-0.619143136037867
Re = 1.00000000000000
N = 10 M = 10 L = 6 NG = 700
RNORM = 1.61121637944562
-0.326830619713956
-0.126271549842852
0.722360570049850
1.80924509608950
2.53407451635900
2.53407451711801
1.80924509723304
0.722360570323930
-0.126271549693067
-0.326830622381797
Re = 5.310000000000000E-002
N = 10 M = 10 L = 8 NG = 900
RNORM = 0.566753348204634
cx = 141.077316493218
-0.148559910378485
26
4.41634799400807
12.8797320795403
22.9247635212190
30.0361909272547
30.0361909218882
22.9247635254677
12.8797320741111
4.41634799377488
-0.148559902367000
Re = 2.655000000000000E-002
N = 10 M = 10 L = 8 NG = 900
RNORM = 0.566748236345522
RNORM = 2.70298781554544
cx = 277.553962477657
0.290267199493474
9.20815744768917
25.5572312712466
44.5775094999418
57.8292623527121
57.8292623620776
44.5775094893973
25.5572312805316
9.20815744479441
0.290267109295435
Re = 0.121850000000000
N = 10 M = 10 L = 8 NG = 900
RNORM = 0.566756232409076
RNORM = 2.21711291311578
cx = 63.7334852238571
-0.546449962469689
1.62707352047729
5.60915031848993
10.5739261889325
14.2648204772767
14.2648204794420
10.5739261853727
5.60915031991302
1.62707351799619
-0.546449977138080
Re = 0.363850000000000
N = 10 M = 10 L = 8 NG = 900
RNORM = 0.566757714042785
RNORM = 2.12642733071093
cx = 23.9935812150960
-0.561282918377063
0.224189867776963
1.94827443094017
4.29930595838703
27
6.15231840772038
6.15231840727500
4.29930595833222
1.94827443055855
0.224189867034025
- 0.561282912496956
Re = 0.746500000000000
N = 10 M = 10 L = 8 NG = 900
RNORM = 0.566758096447235
RNORM = 2.03947523475654
cx = 13.5976635683187
-0.270736932801389
-0.138673932574962
0.978957667193734
2.68654965500235
3.93690977422954
3.93690977634343
2.68654965274381
0.978957658548897
-0.138673938709378
-0.270737032259533
Re = 0.100000000000000
N = 10 M = 10 L = 8 NG = 900
V = 1.00000000000000 0.000000000000000E+000
0.000000000000000E+000
RNORM = 27.9837975416242
RNORM = 17.1111012855924
0.681997866603131
12.3749773038750
24.3430348113289
25.1351611489324
23.4242142324279
23.4242142384720
25.1351611743120
24.3430348245748
12.3749773286490
0.681997783575103
Re = 0.100000000000000
N = 10 M = 10 L = 6 NG = 700
V = 1.00000000000000 0.000000000000000E+000
0.000000000000000E+000
RNORM = 17.0201311365744
1.29767689962678
12.3700085220635
24.3416277306569
28
24.8550143803690
22.8827498145754
22.8827498110809
24.8550143823760
24.3416277239559
12.3700085230853
1.29767694293161
Re = 1.00000000000000
N = 10 M = 10 L = 8 NG = 900
V = 1.00000000000000 0.000000000000000E+000
0.000000000000000E+000
RNORM = 3.38583662350056
RNORM = 2.79454959134685
-0.361230045979721
0.874340156077618
3.19918044084037
4.09868749134195
4.20240699923339
4.20240699909798
4.09868749008569
3.19918044060441
0.874340156778701
-0.361230047438596
Re = 1.00000000000000
N = 10 M = 10 L = 6 NG = 700
V = 1.00000000000000 0.000000000000000E+000
0.000000000000000E+000
RNORM = 2.40075207803839
-0.550594140517013
0.995323568668202
3.03434338144603
3.33044753508521
3.04858135031112
3.04858135006093
3.33044753493757
3.03434338093937
0.995323569184120
-0.550594141549939
Re = 0.100000000000000
N = 10 M = 10 L = 8 NG = 900
V = 0.577350269189626 0.577350269189626
0.577350269189626
RNORM = 24.0307704029246
RNORM = 28.3042841550050
24.1090926151110
29
27.9480812377110
26.9538931882897
19.8910148523083
14.1621797493254
11.2003082625814
7.94261837902390
1.08545499811139
-12.7662487452315
-22.2448135302644
Re = 0.100000000000000
N = 10 M = 10 L = 6 NG = 700
V = 0.577350269189626 0.577350269189626
0.577350269189626
RNORM = 28.9695556055097
24.2298124198272
27.9087946393524
27.1178857880226
20.4596475291812
15.4134008947970
12.1981836145007
7.74746357495922
-0.291870923071681
-13.6911364438648
-22.0035944483874
Re = 1.00000000000000
N = 10 M = 10 L = 8 NG = 900
V = 0.577350269189626 0.577350269189626
0.577350269189626
RNORM = 3.21867184365714
RNORM = 4.72279029330677
2.59347296066003
3.56340239405105
3.96369388741086
2.74882992251275
2.04495964352833
1.28854911221314
0.711811403916300
-0.516948186680814
-1.85642099511590
-3.16777688388596
Re = 1.00000000000000
N = 10 M = 10 L = 6 NG = 700
V = 0.577350269189626 0.577350269189626
0.577350269189626
RNORM = 4.61764688883066
3.73891949048346
3.92012661716348
4.31719338917841
30
3.58029080847856
2.67468369717597
2.24949308615439
1.24964917716227
-0.544708613735824
-2.09326223551972
-1.96236849520539
∂v1
p11 = − p + 2 µ ,
∂x1
∂v1 ∂v 2
p12 = µ + ,
∂
2x ∂x 1
∂v ∂v
1 3
p13 = µ + .
∂x3 ∂x1
∂v1 ∂v 2
p1 j n j = − p sin θ cos ϕ + µ[(sin 2 θ cos 2 ϕ − cos 2θ ) + sin 2 θ sin ϕ cos ϕ +
∂r ∂r
∂v 3
+ sin θ cos θ cos ϕ ], dσ = R 2 Sinθdθdϕ .
∂r
π 2π
2π n 2l
∑ ν ∑ fνk ,
Fx = ∫ (sin θ ∫ p1 j n j dϕ )dθ =
c
L ν =1 k =0
0 0
где сν – коэффициенты квадратурной формулы по θ на [0,π]:
π n −1
cos lψ ν (2ν − 1)π
cν = (1 − 2 ∑ ), ψ ν = ,ν = 1,2,..., n.
l =2 ( 2 ) l − 1
2
n 2n
31
1 ∂v€1 ∂v€2
f = − p sin θ cos ϕ +
2
[(sin θ cos ϕ − cos 2θ sin θ )(−1 +
3 2
) + sin θ sin ϕ cos ϕ
3
+
Re ∂r ∂r
∂v€3
+ sin 2 θ cos θ cos ϕ ]
∂r
Fx 4 n 2l
cx =
1
= ∑ ν ∑ fνk .
c
L ν =1 k =0
ρU ∞2 ⋅ πR 2
2
Вычисляется подпрограммой: function cx(Re,pi,m,n,L,NG,x)
Здесь x – вектор решения системы нелинейных уравнений.
Остальные параметры: число Рейнольдса, π и параметры сетки.
4 m cν pν m−1
(2ν − 1)π
p (1) = ∑
m ν =1 1 + xν
, cν = 0 . 5 + ∑
l =1
cos lθν , xν = cos θν ,θν =
2m
ν = 1,2,..., m;
8 m cν uν m−1
(2ν − 1)π
u′(1) = ∑
m ν =1 xν − 1
2
, cν = 0 . 5 + ∑
l =1
cos lθν , xν = cos θν ,θν =
2m
ν = 1,2,..., m;
Re cx
Расчёт опыт
0.02655 277.55 476.6
0.12185 63.73 109.6
0.36385 23.99 38.82
0.7465 13.60 19.40
32
Литература.
33
11. Пальцев Б.В. Об условиях сходимости итерационных методов с
полным расщеплением граничных условий для системы Стокса в
шаре и шаровом слое // Ж. вычисл. матем. и матем. физ. 1995. Т. 35.
№ 6. С. 935-963.
34
22. Г. Ламб. Гидродинамика. Гос. изд-во технико-теоритической
литературы, Москва 1947 Ленинград, 928 стр.
23. Р. Темам. Уравнения Навье-Стокса. Теория и численный анализ. Изд-
во «Мир», 1981, 408 стр.
24. Бабенко К. И. Основы численного анализа. М.: Наука, 1986. 744 с.;
Издание второе, исправленное и дополненное, под редакцией А. Д.
Брюно. Москва-Ижевск, РХД, 2002. 847 с.
25. Лойцянский Л. Г. Механика жидкости и газа, «Наука», 1973, 418 стр.
26. Корн Г и Т. Корн. Справочник по математике. «Наука», 1978, 831
стр.
27. Алгазин С. Д. Численные алгоритмы классической матфизики. V.
Уравнения Стокса // Препринт № 700, ИПМех РАН, 2002 г.,40 стр.
28. Бартеньев О. В. Фортран для профессионалов. Математическая
библиотека IMSL (часть вторая). Москва, Диалог Мифи, 2001, 319
стр.
35