Академический Документы
Профессиональный Документы
Культура Документы
С. Д. Алгазин, Г. И. Кершуков
Препринт № 722
Москва 2003 г.
Аннотация.
Рассматривается трёхмерное уравнение Пуассона в цилиндре с
неоднородными краевыми условиями и правой частью
обеспечивающими гладкость решения. Для приближенного
нахождения этого решения построен численный алгоритм без
насыщения. Указан эффективный способ решения соответствующей
дискретной задачи.
The summary.
The three-dimensional Poisson equation in the cylinder with non-
uniform regional conditions and with the right of part ensuring smooth of
the solution is considered. For approximate finding of this solution the
numerical algorithm without saturation is constructed. The effective way
of the solution of the appropriate discrete problem is specified.
2
Введение.
3
матрицы большого размера к обращению нескольких матриц
меньшего размера. Можно сказать, что, вместо решения трехмерной
задачи, решается несколько двухмерных задач. В случае кругового
цилиндра задача еще упрощается и сводится к решению нескольких
одномерных задач.
Описание методики проведём для случая кругового цилиндра. По
ходу изложения будет сказано, как обобщить эти результаты на
случай цилиндра с произвольным основанием.
Здесь
4
1
K( ζ , ξ ) = − ζ − ξ )|, ζ ρ=
ln|(1- ζξ )/(= exp(iϕ ), ξ r exp(iϕ )
2π
- функция Грина оператора Лапласа с краевым условием Дирихле
(однородным);
1 1 − ρ2
K 0 (ζ , ϑ ) = , ζ = ρ exp(iϕ )
2π 1 + ρ 2 − 2 ρ cos(ϑ − ϕ )
- ядро Пуассона.
Выберем в круге (сечении цилиндра плоскостью z=const) сетку
из m окружностей и N=2n+1 точек на каждой окружности. На
границе круга также выберем N=2n+1 точек. Причём радиус ν -ой
1, 2 ,...,m. По окружностям узлы
окружности r ν =cos(2ν − 1) / π / 4m) , ν =
располагаются через равные углы ϑ l = 2π l/N, l=0,1,...,2n.
Применим для функции
∂ 2u
F (ξ , z) = f( ξ , z) +
∂ z2
~ 2n
u ( ζ , z ) = ∑ Hi (ζ ) F (ξi , z ) + ∑ H 0j (ζ ) gc (ϑj , z ), (I.5)
i j =0
где
H i (ζ ) = ∫ K (ζ , ξ )l (ξ )dξ ,
|ζ |≤1
i
n
2
H 0j = (0.5 + ∑ ρ l cos l (ϕ − ϑ j )),ζ = ρ exp(iϕ ).
N l =1
5
Здесь l i (ξ ), i=1,2,...,R, R=mN - фундаментальные функции
интерполяционной формулы К. И. Бабенко в круге. Конкретный вид
этих функций приведен в [8, стр. 212]. Для дальнейших рассуждений
он неважен.
Проведём теперь дискретизацию ∂ 2 v / ∂ z по z. Выберем для v (ξ , z)
интерполяционную формулу по k узлам
~ (−1) k +1 ( x − 1)
v(ξ , z ) = Tk ( x) g a (ξ )
2
2(1 − x2 ) k 1 k −1 ' ~
+
= k
∑ ∑
sin2 ψ j q 0
j 1=
cos( qψ )T
j q ( x ) v (ξ , z j )
( x + 1)
+ Tk ( x) gb (ξ ). (I.6)
2
~
Здесь v(ζ , z ) - приближённое значение функции v(ζ , z ),
2(1 − x 2 ) 1 k −1
L j ( x) =
k sin 2 ψ j
∑
q =0
'
co (sqψ j )Tq ( x),
( x + 1)
Lb ( x) = Tk ( x).
2
6
Обозначим
4
Φ (ζ , z )
= ∑Hp
p (ζ )[ f (ζ p , z ) +
(b − a ) 2
{L''a ( x) g a (ξ p )
2n
(I.8)
+ L ( x) gb (ξ p )]} + ∑ H (ζ ) g c (ϑq , z ),
''
b
0
q
q =0
4
Dij = L''j ( xi ); i,j = 1,2,...,k
(b − a ) 2
k ~
=u (ζ q , zi ) ∑H ∑Dp
q p
j =1
ij u (ζ p , z j ) + Φ (ζ q , z j ). (I.9)
8
k
Заметим, что I = I R ⊗ I k ; I k = ∑ bk , тогда
q =1
k k k
I − H ⊗ D = I R ⊗ ( ∑ bq ) − H ⊗ ( ∑ λ q bq ) = ∑ ( I R − λ q H ) ⊗ bq .
q =1 q =1 q =1
10
f (r , ϑ , z ) = ( −9rz 6 + 25rz 6 − 30r 3 z 4 ) cos 5ϑ ;
g a (r , ϑ ) = 0;
gb (r , ϑ ) = π r 3 cos 5ϑ ;
6
g c (ϑ , z ) = z 6 cos 5ϑ .
11
∆e = 0,
ea = 0,
eb = (1 − 2ν ) ρgb / E ,
ec = (1 − 2ν ) ρgz / E .
12
Программа считывает начальные данные из файла DATA [7],
использует подпрограммы HMATR1, RASPAK, TRANSP [7] и
производит умножение матрицы (I.12) вычисляемой подпрограммой
KRON на вектор правой части. Затем вычисляются значения
решения на оси цилиндра в узлах сетки (результат в Y2).
PROGRAM DEFGM7a
C 21.10.96 Тетрадь ВННИИ нефть N1, стр.115
IMPLICIT REAL*8 (A-H,O-Z)
PARAMETER (K= 6,M=9,N=15,NT=M*N,NG=NT*K,AL=0.,BL=3.141592653589D0)
DIMENSION D(K,K),A(K,K),B(K,K),IANA(K),X(K),Y(K),IANA1(K),D1(K,K),
*C0(225),C1(225),H(NT,NT),R(NG,NG),LR(NG),MR(NG),C(225),R1(NG,NG),
*R2(NG,NG),HR(NT,NT),U1(NG),U2(NG),FI(NG),H0(N),NL(N),U(NT),Y1(NT),
*Z(NT),Y2(K)
INTEGER*4 P,Q,S
REAL*8 LA2,LB2
PI=3.141592653589D0
C
C KAHAЛ BBOДA ДAHHЫX
NREAD = 3
OPEN(UNIT=3,FILE='DATA')
C KAHAЛ ПPOMEЖУTOЧHЫX BЫДAЧ
NOUT = 4
OPEN(UNIT=4,FILE='NOUT')
C
IM = 0
300 IM = IM + 1
IF (IM.GT.10) STOP
READ(NREAD,*) M1
C
NM=(N-1)/2
M2=M1*M1
C
READ (NREAD,*) (C0(I),I=1,M2)
READ (NREAD,*) (C1(I),I=1,M2)
IF (M1.NE.M) GO TO 300
C
WRITE (NOUT,*) ' M = ', M
WRITE(NOUT,*) 'LAMDA0'
WRITE(NOUT,*) (C0(I),I=1,M2)
WRITE(NOUT,*) 'LAMDA1'
WRITE(NOUT,*) (C1(I),I=1,M2)
C
CALL HMATR1 (H,M,N,C0,C1,C)
CALL RASPAK(H,M,NM)
CALL TRANSP (H,NT)
C
DO 1 I=1,NG
DO 1 J=1,NG
R2(I,J)=0.D0
1 CONTINUE
C
CALL KRON (R2,NG,H,HR,NT,D,K,AL,BL,X,Y,IANA,IANA1,A,B,LR,MR)
C
13
Q=0
I1=0
DO 3 NU=1,M
RNU=COS((2.*NU-1.)*PI/4./M)
DO 3 L=1,N
TETAL=2.*PI*(L-1)/N
Q=Q+1
CALL HJ0 (RNU,TETAL,H0,N)
DO 3 I=1,K
PSI=(2.*I-1.)*PI/2./K
XI=COS(PSI)
ZI=(XI*(BL-AL)+BL+AL)/2.
TK1=K*SIN(K*PSI)/SIN(PSI)
TK2=K*XI*SIN(K*PSI)/SIN(PSI)**3
LA2=(-1)**(K+1)*(2.*TK1+(XI-1)*TK2)/2.
LB2=(2.*TK1+(XI+1)*TK2)/2.
I1=I1+1
SUM=0.D0
DO 4 S=1,N
TETAS=2.*PI*(S-1)/N
4 SUM=SUM+H0(S)*GC(TETAS,ZI)
FI(I1)=SUM
P=0
SUM=0.D0
DO 5 MU=1,M
RMU=COS((2.*MU-1.)*PI/4./M)
DO 5 LM=1,N
TETALM=2.*PI*(LM-1)/N
P=P+1
5 SUM=SUM+H(Q,P)*(F(RMU,TETALM,ZI)+(2./(BL-AL))**2*
*(LA2*GA(RMU,TETALM)+LB2*GB(RMU,TETALM)))
3 FI(I1)=FI(I1)+SUM
C
DO 6 I=1,NG
SUM=0.D0
DO 8 J=1,NG
8 SUM=SUM+R2(I,J)*FI(J)
6 U2(I)=SUM
C В U2 результат
DO 10 I=1,M
10 NL(I)=N
DO 11 I=1,K
I1=I
DO 13 J=1,NT
U(J)=U2(I1)
13 I1=I1+K
CALL URT (0.D0,M,NL,U,Y1)
CALL URT (3.14159265359D0,M,NL,U,Z)
DO 40 I2=1,M
I1=M1-I2+1
40 Y(I1)=Z(I2)
X0=0.D0
11 Y2(I)=EIGEN (X0,Y1,Z,M1,-1.D0,1.D0)
WRITE(*,12) Y2
12 FORMAT(1X,3E18.11)
STOP
END
REAL*8 FUNCTION F(R,TETA,Z)
IMPLICIT REAL*8 (A-H,O-Z)
14
F=10.D0
RETURN
END
REAL*8 FUNCTION GA(R,TETA)
IMPLICIT REAL*8 (A-H,O-Z)
GA=0.D0
RETURN
END
REAL*8 FUNCTION GB(R,TETA)
IMPLICIT REAL*8 (A-H,O-Z)
GB=R**3*3.141592653589D0**6*COS(5.*TETA)
RETURN
END
REAL*8 FUNCTION GC(TETA,Z)
IMPLICIT REAL*8 (A-H,O-Z)
GC=Z**6*COS(5.*TETA)
RETURN
END
15
D – массив K×K, который служит для вычисления матрицы D.
На выходе не сохраняется;
K – размер матрицы D;
AL, BL – a и b границы интервала на котором рассматривается
задача (по z);
X, Y- массивы длины K на выходе содержат действительную и
мнимую часть собственных значений (если Y не тождественно равно
нулю – ошибка);
IANA – одномерный массив длины K, который содержит в i-ом
элементе номер i-го собственного значения матрицы D в порядке
возрастания;
IANA1 – тоже, что и IANA но для матрицы D';
A – матрица K×K, которая содержит по столбцам собственные
векторы матрицы D. Для того, чтобы их выбрать в порядке
возрастания собственных значений нужно воспользоваться
массивом IANA;
B – то же, что и A для матрицы D';
LR, MR – рабочие массивы длины NT.
Используются подпрограммы: SPEKTR, DMINV, KRDIV1.
DMINV – вариант с двойной точностью подпрограммы MINV
[10].
16
DO 1 I=1,K
DO 1 J=1,I
P=D(I,J)
D(I,J)=D(J,I)
1 D(J,I)=P
CALL ELMHES (K,K,1,K,D,IANA1)
CALL ELTRAN (K,K,1,K,D,IANA1,B)
CALL HQR2 (K,K,1,K,D,X,Y,B,IERR)
CALL SORT(X,Y,K,IANA1)
DO 2 I=1,K
P=0.D0
I1=IANA (I)
I2=IANA1(I)
DO 3 J=1,K
3 P=P+A(J,I1)*B(J,I2)
DO 4 J=1,K
4 A(J,I1)=A(J,I1)/P
2 CONTINUE
RETURN
END
17
B – то же, что и A для матрицы D';
Требуемые подпрограммы: ZSL1, SORT, ELMHES, ELTRAN,HQR2.
SUBROUTINE ZSL1(D,K,A,B)
IMPLICIT REAL*8 (A-H,O-Z)
INTEGER*4 Q
DIMENSION D(K,K)
PI=3.141592653589D0
DO 1 I=1,K
PSI=(2*I-1)*PI/2./K
DO 1 J=1,K
PSJ=(2*J-1)*PI/2./K
S=1.D0
DO 2 Q=1,K-1
2 S=S+COS(Q*PSJ)*((2+Q**2)*COS(Q*PSI)+
+3.*Q*COS(PSI)*SIN(Q*PSI)/SIN(PSI))
1 D(I,J)=-2.*(2./(B-A))**2*S/K/SIN(PSJ)**2
RETURN
END
sin qψ i
2 k −1
2 2 1
Dij = −
b − a k sin ψ j
2 ∑ '
cos qψ j (2 + q 2 ) cos qψ i + 3q cos qψ i
ψ
,
q =0 sin i
ψ j = ( 2 j2−k1)π , j = 1,2,..., k .
SUBROUTINE SORT(Y,X,N,INT)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Y(N),X(N),INT(N)
DO 10 I=1,N
INT(I)=0
10 X(I)=Y(I)
DO 1 I=1,N
P=0.D0
DO 3 J=1,N
IF(ABS(X(J)).GT.P) THEN P=ABS(X(J))
INT(N-I+1)=J
ENDIF
3 CONTINUE X(INT(N-I+1))=0.D0
1 CONTINUE
RETURN
END
18
Сортировка массива Y. Подпрограмма запоминает в массиве INT
номера элементов массива Y в порядке возрастания модулей
элементов, т.е. INT(1) содержит минимальный по модулю элемент,
INT(2) следующий по величине модуля элемент и т.д.
X- рабочий массив длины N.
ELMHES, ELTRAN,HQR2 – подпрограммы пакета EISPACK тексты
этих подпрограмм доступны в Интернет по адресу:
htpp:/www.netlib.org/eispack/.
19
Алгазин Сергей Дмитриевич, Кершуков Григорий
Игоревич
20