Потенциальное обтекание тела вращения потоком несжимаемой жидкости - Учебное пособие

бесплатно 0
4.5 126
Применение метода конечных элементов для решения задачи обтекания тела вращения под нулевым углом атаки. Характеристика свойства приближения гладких функций интерполяционными многочленами. Расчет лапласиана скалярной функции в декартовых координатах.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Институт проблем механики Российской Академии Наук Потенциальное обтекание тела вращения потоком несжимаемой жидкости. Рассматривается задача о потенциальном обтекании тела вращения потоком несжимаемой жидкости. Приводится численный алгоритм и программы на Фортране. The problem about potential flow of a body of rotation by a flow of incompressible fluid is considered.

Введение
Это шестой препринтт серии объявленной в [1]. Предыдущие препринты этой серии [1-5]. Препринт посвящен описанию програмного комплекса решения задачи об обтекании тела вращения потенциальным потоком несжимаемой жидкости.

I. Численное исследование задачи об обтекании под углом атаки тела вращения потенциальным потоком идеальной несжимаемой жидкости.

Численное исследование устойчивости движения автомобиля при боковом ветре имеет важное значение для безопасности его движения. В настоящее время такие исследования проводятся в аэродинамической трубе обдуванием готового автомобиля или его модели. Натурные эксперименты дороги, кроме того, требуют изготовления опытного экземпляра модели или целого автомобиля. Представляется перспективным заменить натурный эксперимент численным и исследовать аэродинамику автомобиля на стадии проектирования. Для этого требуется выбрать математическую модель и решить численно выписанные уравнения. Поскольку скорости движения автомобиля невысоки по сравнению со скоростью звука и составляют примерно третью его часть, то обычно выбирается модель несжимаемой жидкости. Кроме того, обычно предполагается, что жидкость идеальная и течение является потенциальным. В такой постановке рассматриваемая задача решается панельным методом [6]. Недостатком этого метода

3 является его насыщаемость, т. е. он не использует информацию о гладкости решаемого уравнения Лапласа. В настоящей работе отрабатывается методика построения алгоритма без насыщения на примере тела вращения, обтекаемого потенциальным потоком идеальной несжимаемой жидкости. Построенный алгоритм использует априорную информацию о гладкости решения уравнения Лапласа. Проведенные расчеты показывают перспективность его применения в задаче об обтекании автомобиля потенциальным потоком идеальной несжимаемой жидкости. Количество узлов сетки по сравнению с методом конечных элементов может быть уменьшено в 10 раз при получении в результате такой же точности.

Осесимметричная задача, т.е. обтекание тела вращения под нулевым углом атаки, решалась в [7] методом конечных элементов. Точность полученного решения невысока. В настоящей работе исследуется более общее течение под ненулевыми углами атаки. Предложенный численный алгоритм не имеет насыщения [7] ,т.е. его точность автоматически реагирует на гладкость решения. Это позволяет проводить расчеты с высокой точностью на редкой сетке.

Задача обтекания тела Т потенциальным потоком идеальной несжимаемой жидкости сводится к отысканию потенциала скорости Ф=Ф(х1,х2,х3) - функции гармонической вне обтекаемого тела Т: (1) ?? ? 0, (2) ?? ? 0, ?n

?T

?

(3) grad ? ?V? при x ? ?,

где n - внутренняя нормаль к телу, ДТ - граница тела Т, V? - скорость потока в бесконечности, |х| - длина вектора (х1,х2,х3).

4

Без ограничения общности можно принять, что скорость на бесконечности V? = (1,0,0). В случае шара Т = {х:|х|?1} потенциал имеет вид Ф = х1 х1 /(2|х|3).

?

Как окончательный выход алгоритма интересен не только потенциал скорости, но и давление и вектор скорости, особенно на поверхности обтекаемого тела. Давление вычисляется по формуле, вытекающей из интеграла Бернулли: p??1 ? 2V 2 ? p? ??1 ? 2V 2 , V ? grad?, ?

1 1 где р - давление на бесконечности, ?- плотность, V, V? - модули скорости.

Если в соотношениях (1)-(3) произвести замену Ф=х1 - Ф1 то Ф гармонична в области ?=R3\T: (4) ?n1 ? cos(n,x ), ??

1

(5) ?1 ? 0 при | x |? ?.

Введем криволинейную систему координат (r, ?, ?), связанную с декартовыми координатами (х1,х2,х3) соотношениями: (6) x1=v(r,?)cos?, x2=v(r,?)sin?, x3=u(r, ?).

Если выполняются условия Коши-Римана:

?v 1 ?u ?u 1 ?v ?r r ?? ?r r ??

? ? , ? , то система координат (r, ?, ?) ортогональна, и в этой системе координат Лапласиан скалярной функции имеет вид

?? ? v r 2 ? ? ?rv ???? ? ?v ???? ? 1 ?2? , ?2 ? (?v/??)2 ?(?u /??)2.

?

?

? ?

? ?

? ? ? ?

? ? ? ? r ?

?r ?r ?

2 2

? v ?

?

5

Обозначим G область, получаемую меридиональным сечением тела вращения Т. Пусть ?=?(?), ?=u iv, ?=r exp (i?) - конформное отображение круга | ?|?1 на внешность области G, причем центр круга переходит в бесконечность, тогда ? ? r |??(?)|.

Удобно считать, что (r, ?, ?) - сферические координаты, тогда соотношения (6) задают отображение проколотого в центре шара единичного радиуса на внешность рассматриваемого тела Т. В результате замены (6) соотношения (4), (5) принимают вид

(7) ??1 ?|?? | f ( ,?) ? f1( ,?) r?1

?

?

?r

(8) ?1 r?0 ? 0, где f(?,?) получается Из cos(п,х1) заменой (5.6).

Знак в формуле (7) выбран с учетом того, что при отображении (6) внутренняя нормаль к телу переходит во внешнюю.

Произведем еще одну замену: ?2(r, ?, ?)= ?1 (r, ?, ?)- rf1(?, ?), тогда из соотношения (7), (8) получаем

(9) ??2 ? 0, r?1

?r

(10) ?2 r?0 ? 0.

Теперь функция ?2(r, ?, ?) не гармоническая, а удовлетворяет уравнению Пуассона

(11) ??2 ? ??(rf1( ,?) ? F(r,?,?)

? с однородными краевыми условиями (9),(10).

6

Рассмотрим, например, эллипсоид вращения 2 2 2

1 2 3 x x x b2 ? b2 ? a2 ?1? 0.

Тогда:

u(r,?) ? 1?(a ?b)r ? a ?b?cos?, v(r,?) ? 1?(a?b)r ? a ?b?sin?, 2 r

? ?

? ?

2 r

? ?

? ?

?2 ? 1?(a ?b)r ? (a ?b)2 ?2 sin2 ? ? 1?(a ?b)r ? (a ?b)2 ?2 cos2 ?, 4 r 4 r

? ? ? ?

? ? ? ?

? ? ? ? f1( ,?) ? asin? cos?, ?

F(r,?,?) ? a rcos? ?(b ?a)sin2 ? ? 1?(b ?a)r ? a ?b?cos2 ?? ? rsinv cos? .

?

2 2

2 r v

?

? ?

? ?

? ?

? ?

Например, для шара (а=1,b=1) F(r,?,?) ? 2x3 sin? cos? , а решение краевой задачи (9)-(11) есть ? (r,?,?) ? ?r2 ? r?sin? cos? .

2

? ?

? ?

2

? ?

Если ?2 найдено, то для эллипсоида Ф=v(r,?)cos?- ?1(r, ?, ?).

Для дискретизации краевой задачи (9)-(11) применим подход, предложенный в [8]. Таким образом, получаем дискретный Лапласиан в виде h - матрицы: H ? L ? " ?k ?hk , L ? 2l ?1, k?0 l

2 где штрих у знака суммы означает, что слагаемое при k= 0 берется с коэффициентом 1/2, символ ? обозначает кронекерово произведение матриц ?k и hk размера M x M и L x L соответственно. Матрицы ?k размера, M x M, M = тп, получены дискретизацией дифференциального соотношения, зависящего от k:

7

(12) vr 2 ??r ?rv ??r2 ?? ?? ?r ??2 ?? ? k2 ?2 , k ? 0,1,...,L ?1

? ?

? ?

? ? ? ?

? ? ? ?

? ??

? ? v

? v

2 с краевыми условиями (9), (10), где m - число узлов сетки по r, n -число узлов сетки по ?.

Для дискретизации дифференциального оператора (12) выберем по ? сетку, состоящую из n узлов:

?? ? 2 (x? ?1), x? ? cos?? , ?? ? (2 2n1)? ,? ?1,2,...,n, ?

?

? и применим интерполяционную формулу f (

(?1)

) ? , ?

?

(13) n

Tn (x) f? ??1

??1 n sin x? (x ? x? )

Tn (x) ? cos(narccos(x)).

x ? ? (2? ??), f? ? f ( ? ),? ?1,2,...,n;

1

?

Первую и вторую производные, входящие в соотношения (12), получим дифференцированием интерполяционной формулы (13).

По r выбираем сетку, состоящую из m узлов:

r ? 2(y? ?1), y? ? cos?? , ?? ? (2 2m )? , ? ?1,2,...,m, ?

?1

1

?

и рассмотрим интерполяционную формулу g(r) ? ?l? (r)g? , g? ?g(r ), ??1 n

?

(14) l? (r) ? ? " ??p RTP (2r ?1) ? c? r(r ?1)Tm p?0 m m

??p ? m(cos s? ?1) , c? ? p?0 ??p (1? 2p2 ).

?

?

4co

? m?1 m

?

Заметим, что l? (0) ? 0, l? (1) ? 0,т.е. краевые условия (9), (10) 8

? выполнены. Первую, и вторую производные, входящие в соотношение (12), получим дифференцированием интерполяционной формулы (14).

После того, как матрицы ?k, k = 0,1,... ,l, построены для приближенного решения краевой задачи (9)-(11) требуется решить систему линейных уравнений

(15) НФ2=F, где Ф2 и F- векторы, компоненты которых суть значения соответствующих функций в узлах сетки (по ? выбирается сетка из узлов (?k =2?k/L, k=0,1,…,L-1).

В [8] показано, что для обращения h- матрицы справедлива формула

(16) H ?1 ? L ? " ??1k ?hk , L ? 2l ?1, k?0 l

2 т.е. для решения системы линейных уравнений (15) достаточно обратить матрицы ?k, k = 0,1,... ,l, после чего задача сводится к умножению h- матрицы (16) на вектор.

Оценку погрешности построенной дискретизации можно получить стандартными средствами. Отметим только ее качественные особенности. Для дискретизации использовалась интерполяция решения многочленами. Известно [7,9], свойство приближения гладких функций интерполяционными многочленами. Это приближение тем точнее, чем большим условиям гладкости отвечает приближаемая функция. Таким образом, построенный алгоритм не имеет насыщения, т.е. точность полученного приближенного решения тем выше, чем большим условиям гладкости отвечает точное решение.

9

Конкретные расчеты проводились для шара (а=1,b=1) и эллипсоида (а=1,b=0.5) на сетке m=7, n=10, L=9, т.е. состоящей из 630 узлов. Оказалось, что для шара матрица ?0 плохо обращается методом Гаусса. Норма (?0 ?0-1-I) оказалась порядка 10-3. Пришлось применить итерационное уточнение обратной матрицы [10], после чего норма (?0 ?0-1-I) уменьшилась до 10-8. Однако непосредственным умножением матрицы (16) на вектор получить решение не удается. Дело в том, что норка ?0-1 оказалась порядка 1016. Норма остальных матриц ?1, ?2, ?3, ?4, суть 105, 104, 103, 103. Пришлось применить масштабирование с коэффициентом 1010. После этого мантисса полученного приближенного решения совпала с мантиссой точного решения с 7 знаками после запятой (порядок отличался на 10 в соответствии с выбранным масштабным множителем). Для эллипсоида матрица ?0 обращалась хорошо, и итерационное уточнение обратной матрицы не потребовалось.

Нормы матриц ?0, ?1, ?2, ?3, ?4 имели величину порядка 106, 104, 103 ,103, 103, соответственно масштабирование не потребовалось (разумеется, правая часть уравнения Пуассона (11) должна быть вычислена с 6-7 запасными знаками).

Отметим, что для умножения матрицы Н-1 на вектор требуется O(m2 n2LLOGL) операций.

Итак, проведенные расчеты показали, что дискретная задача может быть плохо обусловленной. Поэтому при практическом применении алгоритма следует следить за качеством обращения клеток h - матрицы ?0, ?1, …, ?l. В случае необходимости применять итерационное уточнение обратной матрицы. Также следует следить за нормой полученных матриц ?0-1,?1-1 …,?l-1и применять, если потребуется, масштабирование и вычисление

10 правой части уравнения Пуассона с запасными знаками.

II. Описание программного комплекса.

Решает поставленную задачу для шара программа INT5.

PROGRAM INT5 C 23.7.92 - 31.7.92

IMPLICIT REAL*8 (A-H,O-Z)

DIMENSION C0(4900),C1(4900),C2(4900),C3(4900),C4(4900), *F(630),U(630)

DIMENSION AD(4900),D0(4900),D1(4900),R0(4900) DIMENSION DL1(49),DL2(49),DB1(169),DB2(169) DIMENSION LX(70),LY(70)

COMMON AE,BE

FU(R,TETA,FI)=(R**2/2.-R)*SIN(TETA)*COS(FI) AE=1.D0

BE=1.D0 C

M=5 M=7 N=10 NT=M*N

CALL MLKG4 (C0,0,DL1,DL2,DB1,DB2,M,N,NT) CALLMLKG4 (C1,1,DL1,DL2,DB1,DB2,M,N,NT) CALLMLKG4 (C2,2,DL1,DL2,DB1,DB2,M,N,NT) CALLMLKG4 (C3,3,DL1,DL2,DB1,DB2,M,N,NT) CALLMLKG4 (C4,4,DL1,DL2,DB1,DB2,M,N,NT) NOUT = 4

OPEN(UNIT=4,FILE="NOUT") IJ=0

DO 10 I=1,NT DO 10 J=1,NT IJ=IJ 1

10 AD(IJ)=C0(IJ)

CALL DMINV (C0,NT,DET,LX,LY) C

NM=100 NM=5 NM=10 EPS=1.D-15 IJ=0

11

DO 13 I=1,NT DO 13 J=1,NT IJ=IJ 1

13 D0(IJ)=C0(IJ)

CALL ITER0 (NT,AD,D0,D1,R0,NM,EPS) IJ=0

DO 11 I=1,NT DO 11 J=1,NT IJ=IJ 1

11 C0(IJ)=D1(IJ)

CALL PRO (AD,C0,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C0,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C0,CN) WRITE (*,*) "CNORM = ",CN

C

PM=1.D 17 PM=1.D0 PM=1.D 10 IJ=0

DO 130 I=1,NT DO 130 J=1,NT IJ=IJ 1

130 C0(IJ)=C0(IJ)/PM C

IJ=0

DO 20 I=1,NT DO 20 J=1,NT IJ=IJ 1

20 AD(IJ)=C1(IJ)

CALL DMINV (C1,NT,DET,LX,LY) CALL PRO (AD,C1,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C1,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C1,CN) WRITE (*,*) "CNORM = ",CN

C

IJ=0

DO 131 I=1,NT DO 131 J=1,NT

12

IJ=IJ 1

131 C1(IJ)=C1(IJ)/PM C

IJ=0

DO 30 I=1,NT DO 30 J=1,NT IJ=IJ 1

30 AD(IJ)=C2(IJ)

CALL DMINV (C2,NT,DET,LX,LY) CALL PRO (AD,C2,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C2,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C2,CN) WRITE (*,*) "CNORM = ",CN

C

IJ=0

DO 132 I=1,NT DO 132 J=1,NT IJ=IJ 1

132 C2(IJ)=C2(IJ)/PM C

IJ=0

DO 40 I=1,NT DO 40 J=1,NT IJ=IJ 1

40 AD(IJ)=C3(IJ)

CALL DMINV (C3,NT,DET,LX,LY) CALL PRO (AD,C3,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C3,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C3,CN) WRITE (*,*) "CNORM = ",CN

C

IJ=0

DO 133 I=1,NT DO 133 J=1,NT IJ=IJ 1

133 C3(IJ)=C3(IJ)/PM C

IJ=0

13

DO 50 I=1,NT DO 50 J=1,NT IJ=IJ 1

50 AD(IJ)=C4(IJ)

CALL DMINV (C4,NT,DET,LX,LY) CALL PRO (AD,C4,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C4,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C4,CN) WRITE (*,*) "CNORM = ",CN

C

IJ=0

DO 134 I=1,NT DO 134 J=1,NT IJ=IJ 1

134 C0(IJ)=C0(IJ)/PM C

PI=3.141592653589D0 L=9

I=0

DO 1 NU=1,N XN=COS((2.*NU-1.)*PI/2./N) TETA=PI*(XN 1.)/2.

DO 1 MU=1,M XN=COS((2.*MU-1.)*PI/2./M) R=0.5*(XN 1.)

DO 1 K=0,8 FI=2.*PI*K/L I=I 1

U(I)=FU(R,TETA,FI) 1 F(I)=FB(R,TETA,FI)

NG=NT*L

WRITE(*,*) "ТОЧНОЕ ЗНАЧЕНИЕ" WRITE(*,12) (U(I),I=1,NG,81)

12 FORMAT(4E18.11)

WRITE(4,*) "ТОЧНОЕ ЗНАЧЕНИЕ" WRITE(4,12) (U(I),I=1,NG)

C

CALL DIVH (NT,2,C0,C1,C2,C3,C4,F,U) C

WRITE(*,*) "ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ"

14

WRITE(*,12) (U(I),I=1,NG,81)

WRITE(4,*) "ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ" WRITE(4,12) (U(I),I=1,NG)

STOP END

FUNCTION FB(R,TETA,FI) IMPLICIT REAL*8 (A-H,O-Z) COMMON AE,BE

FB=(AE*R*COS(FI)/V(R,TETA)/W2(R,TETA))* *((BE-AE)*R*SIN(TETA)**2 0.5*((BE-

- AE)*R (AE BE)/R)*COS(2.*TETA)) R*SIN(TETA)*COS(FI)/ /V(R,TETA)**2

RETURN END

FUNCTION V(R,TETA) IMPLICIT REAL*8 (A-H,O-Z) COMMON AE,BE

V=0.5*((AE-BE)*R-(AE BE)/R)*SIN(TETA) RETURN

END

FUNCTION VR(R,TETA) IMPLICIT REAL*8 (A-H,O-Z) COMMON AE,BE

VR=0.5*(AE-BE (AE BE)/R**2)*SIN(TETA) RETURN

END

FUNCTION VT (R,TETA) IMPLICIT REAL*8 (A-H,O-Z) COMMON AE,BE

VT=0.5*((AE-BE)*R-(AE BE)/R)*COS(TETA) RETURN

END

FUNCTION W2 (R,TETA) IMPLICIT REAL*8 (A-H,O-Z) COMMON AE,BE

W2=0.25*((AE-BE)*R (AE BE)/R)**2*SIN(TETA)**2 0.25*((AE-BE)*R-(AE BE)/R)**2*COS(TETA)**2

RETURN END

15

SUBROUTINE MLKG4 (A,K,DL1,DL2,DB1,DB2,M,N,NT) IMPLICIT REAL*8 (A-H,O-Z)

DIMENSION A(NT,NT),DL1(M,M),DL2(M,M),DB1(N,N),DB2(N,N) PI=3.141592653589D0

CALL DIFFR1(DL1,M) CALL DIFFR2(DL2,M) CALL DIFT1 (DB1,N) CALL DIFT2 (DB2,N)

C

DO 2 I=1,NT DO 2 J=1,NT

2 A(I,J)=0.D0 I1=0

DO 1 NU=1,N XN=COS((2.*NU-1)*PI/2./N) TN=PI*(XN 1.)/2.

DO 1 MU=1,M XN=COS((2.*MU-1)*PI/2./M) RM=0.5*(XN 1.)

I1=I1 1 I2=0

DO 1 NU1=1,N DO 1 MU1=1,M I2=I2 1

IF(NU.EQ.NU1) DN=1.D0 IF(NU.NE.NU1) DN=0.D0 IF(MU.EQ.MU1) DM=1.D0 IF(MU.NE.MU1) DM=0.D0

A(I1,I2)=(RM RM**2*VR(RM,TN)/V(RM,TN))* *DL1(MU,MU1)*DN RM**2*DL2(MU,MU1)*DN

(VT(RM,TN)/V(RM,TN))*DB1(NU,NU1)*DM DB2(NU,NU1)*DM

A(I1,I2)=A(I1,I2)/W2(RM,TN)

IF(I1.EQ.I2) A(I1,I2)=A(I1,I2)-K**2/V(RM,TN)**2 1 CONTINUE

RETURN END

C

SUBROUTINE PRO (A,B,NT,CNORM) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION A(NT,NT),B(NT,NT)

16

CNORM=0.D0 DO 1 I=1,NT DO 1 J=1,NT P=0.D0

DO 2 L=1,NT

2 P=P A(I,L)*B(L,J) IF (I.EQ.J) P=P-1.D0

IF (ABS(P).GT.CNORN ) CNORM = ABS(P) 1 CONTINUE

RETURN END

SUBROUTINE ITER0 (N,A,D0,D1,R,M,EPS) IMPLICIT REAL*8 (A-H,O-Z)

DIMENSION A(N,N),D0(N,N),D1(N,N),R(N,N) NITER=0

100 CONTINUE

WRITE (*,*) " NITER = ",NITER DO 1 I=1,N

DO 1 J=1,N P=0.D0

DO 2 L=1,N

2 P=P A(I,L)*D0(L,J) R(I,J)=-P

IF (I.EQ.J) R(I,J)=R(I,J) 1.D0 1 CONTINUE

PMAX=0.D0 DO 3 I=1,N DO 3 J=1,N

IF (ABS(R(I,J)).GT.PMAX) PMAX=ABS(R(I,J)) 3 CONTINUE

IF (PMAX.LE.EPS.OR.NITER.GT.M) RETURN NITER=NITER 1

DO 4 I=1,N DO 4 J=1,N P=0.D0

DO 5 L=1,N

5 P=P D0(I,L)*R(L,J) 4 D1(I,J)=D0(I,J) P

DO 6 I=1,N DO 6 J=1,N

6 D0(I,J)=D1(I,J)

17

GO TO 100 RETURN END

SUBROUTINE SISLO (N,A,A1,COND) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION A(N,N),A1(N,N)

P=0.D0

DO 1 I=1,N Q=0.D0 DO 2 J=1,N

2 Q=Q ABS(A(I,J)) IF (Q.GT.P) P=Q

1 CONTINUE P1=0.D0 DO 3 I=1,N Q=0.D0

DO 4 J=1,N

4 Q=Q ABS(A1(I,J)) IF (Q.GT.P1) P1=Q

3 CONTINUE COND=P*P1 RETURN END

SUBROUTINE CNORM1 (N,A,CN) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION A(N,N)

P=0.D0

DO 1 I=1,N Q=0.D0 DO 2 J=1,N

2 Q=Q ABS(A(I,J)) IF (Q.GT.P) P=Q

1 CONTINUE CN=P RETURN END

18

Вызываемые подпрограммы и подпрограмм-функции: MLKG4, DMINV, ITER0, PRO, SISLO, CNORM1, FB, V, VR, VT, W2.

SUBROUTINE MLKG4 (A,K,DL1,DL2,DB1,DB2,M,N,NT)

Вычисляет K - ую (K=0,1,2,3,4) клетку h-матрицы размера NT x NT, NT=M*N для давления, DL1(M,M), DL2(M,M), DB1(N,N), DB2(N,N) - рабочие массивы.

Вызываемые подпрограммы: DIFFR1, DIFFR2, DIFT1, DIFT2.

DIFT1, DIFT2 описаны в [5]. DIFFR1, DIFFR2 описываются ниже.

SUBROUTINE DIFFR1 (D1,M) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION D1(M,M) PI=3.141592653589D0

DO 1 MU=1,M TM=(2.*MU-1.)*PI/2./M XM=COS(TM) RM=0.5*(XM 1.)

DO 1 NU=1,M TN=(2.*NU-1.)*PI/2./M P=0.

DO 2 NP=0,M-1 BETA=4.*COS(NP*TN)/(1. COS(TN))/M IF(NP.EQ.0) BETA=BETA/2. TPS=NP*SIN(NP*TM)/SIN(TM) TMS=M*SIN(M*TM)/SIN(TM)

2 P=P BETA*(COS(NP*TM) 2.*RM*TPS-(1. 2.*NP**2)* *2.*(RM**2-RM)*TMS)

1 D1(MU,NU)=P RETURN

END

19

SUBROUTINE DIFFR2 (D2,M) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION D2(M,M) PI=3.141592653589D0

DO 1 MU=1,M TM=(2.*MU-1.)*PI/2./M XM=COS(TM) RM=0.5*(XM 1.)

DO 1 NU=1,M TN=(2.*NU-1.)*PI/2./M P=0.

DO 2 NP=0,M-1 BETA=4.*COS(NP*TN)/(1. COS(TN))/M IF(NP.EQ.0) BETA=BETA/2. TPS=NP*SIN(NP*TM)/SIN(TM) TPS2=-

NP**2*COS(NP*TM)/SIN(TM)**2 NP*COS(TM)*SIN(NP*T M)/

/ SIN(TM)**3

TMS=M*SIN(M*TM)/SIN(TM) TMS2=M*COS(TM)* *(-1)**M/SIN(TM)**3

2 P=P BETA*(4.*TPS 4.*RM*TPS2-(1. 2.*NP**2)*(4.*XM*TMS 4.*(RM**2-RM)*TMS2))

1 D2(MU,NU)=P RETURN

END

Эти подпрограммы осуществляют первое и второе дифференцирование по r на отрезке [0,1] для функции u, удовлетворяющей краевым условиям

?u ? 0, u r?1 ? 0. r?1

?r

SUBROUTINE PRO (A,B,NT,CNORM)

Вычисляет норму A*B-I. Результат в CNORM.

SUBROUTINE ITER0 (N,A,D0,D1,R,M,EPS) 20

Итерационное уточнение обратной матрицы: N - размер матрицы;

AD - A исходная матрица;

D0 - A-1 вычисленная с ошибкой обратная матрица; D1 - результат уточнения;

R(N,N) - рабочий массив;

M - максимальное колличество итераций; EPS - точность уточнения.

SUBROUTINE SISLO (N,A,A1,COND)

Число обусловленности A? A1? ? COND.

SUBROUTINE CNORM1 (N,A,CN)

Чебышевская норма A(N,N); A? ? CN.

FUNCTION FB(R,TETA,FI)

Вычисляет правую часть уравнения Пуассона для точного решения FU(R,TETA,FI).

DMINV - вариант с двойной точностью подпрограммы MINV [11]; V, W2, VT, VR- подпрограмм функции для v, w2, v?, vr .

Задачу для эллипса решает программа INT7 (без итерационного уточнения обратной матрицы и масштабирования ). В остальном программа подобна INT5.

21

PROGRAM INT7 C 31.7.92

IMPLICIT REAL*8 (A-H,O-Z)

DIMENSION C0(4900),C1(4900),C2(4900),C3(4900),C4(4900), *F(630),U(630)

DIMENSION AD(4900),D0(4900),D1(4900),R0(4900) DIMENSION DL1(49),DL2(49),DB1(169),DB2(169) DIMENSION LX(70),LY(70)

COMMON AE,BE

FU(R,TETA,FI)=(R**2/2.-R)*SIN(TETA)*COS(FI) AE=1.D0

BE=1.D0 BE=0.5D0

C

M=5 M=7 N=10 NT=M*N

CALL MLKG4 (C0,0,DL1,DL2,DB1,DB2,M,N,NT) CALLMLKG4 (C1,1,DL1,DL2,DB1,DB2,M,N,NT) CALLMLKG4 (C2,2,DL1,DL2,DB1,DB2,M,N,NT) CALLMLKG4 (C3,3,DL1,DL2,DB1,DB2,M,N,NT) CALLMLKG4 (C4,4,DL1,DL2,DB1,DB2,M,N,NT) NOUT = 4

OPEN(UNIT=4,FILE="NOUT") C

IJ=0

DO 10 I=1,NT DO 10 J=1,NT IJ=IJ 1

10 AD(IJ)=C0(IJ)

CALL DMINV (C0,NT,DET,LX,LY) C

CALL PRO (AD,C0,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C0,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C0,CN) WRITE (*,*) "CNORM = ",CN

C

PM=1.D 17 PM=1.D0

22

C PM=1.D 10 IJ=0

DO 130 I=1,NT DO 130 J=1,NT IJ=IJ 1

130 C0(IJ)=C0(IJ)/PM C

IJ=0

DO 20 I=1,NT DO 20 J=1,NT IJ=IJ 1

20 AD(IJ)=C1(IJ)

CALL DMINV (C1,NT,DET,LX,LY) CALL PRO (AD,C1,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C1,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C1,CN) WRITE (*,*) "CNORM = ",CN

C

IJ=0

DO 131 I=1,NT DO 131 J=1,NT IJ=IJ 1

131 C1(IJ)=C1(IJ)/PM C

IJ=0

DO 30 I=1,NT DO 30 J=1,NT IJ=IJ 1

30 AD(IJ)=C2(IJ)

CALL DMINV (C2,NT,DET,LX,LY) CALL PRO (AD,C2,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C2,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C2,CN) WRITE (*,*) "CNORM = ",CN

C

IJ=0

DO 132 I=1,NT DO 132 J=1,NT

23

IJ=IJ 1

132 C2(IJ)=C2(IJ)/PM C

IJ=0

DO 40 I=1,NT DO 40 J=1,NT IJ=IJ 1

40 AD(IJ)=C3(IJ)

CALL DMINV (C3,NT,DET,LX,LY) CALL PRO (AD,C3,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C3,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C3,CN) WRITE (*,*) "CNORM = ",CN

C

IJ=0

DO 133 I=1,NT DO 133 J=1,NT IJ=IJ 1

133 C3(IJ)=C3(IJ)/PM C

IJ=0

DO 50 I=1,NT DO 50 J=1,NT IJ=IJ 1

50 AD(IJ)=C4(IJ)

CALL DMINV (C4,NT,DET,LX,LY) CALL PRO (AD,C4,NT,CNORM)

WRITE (*,*) "DET = ",DET," CNORM = ",CNORM CALL SISLO (NT,AD,C4,COND)

WRITE(*,*) "COND = ",COND CALL CNORM1 (NT,C4,CN) WRITE (*,*) "CNORM = ",CN

C

IJ=0

DO 134 I=1,NT DO 134 J=1,NT IJ=IJ 1

134 C0(IJ)=C0(IJ)/PM C

PI=3.141592653589D0

24

L=9 I=0

DO 1 NU=1,N XN=COS((2.*NU-1.)*PI/2./N) TETA=PI*(XN 1.)/2.

DO 1 MU=1,M XN=COS((2.*MU-1.)*PI/2./M) R=0.5*(XN 1.)

DO 1 K=0,8 FI=2.*PI*K/L I=I 1

U(I)=FU(R,TETA,FI) 1 F(I)=FB(R,TETA,FI)

NG=NT*L

WRITE(*,*) "ТОЧНОЕ ЗНАЧЕНИЕ" WRITE(*,12) (U(I),I=1,NG,81)

12 FORMAT(4E18.11)

WRITE(4,*) "ТОЧНОЕ ЗНАЧЕНИЕ" WRITE(4,12) (U(I),I=1,NG)

C

CALL DIVH (NT,2,C0,C1,C2,C3,C4,F,U) C

WRITE(*,*) "ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ" WRITE(*,12) (U(I),I=1,NG,81)

WRITE(4,*) "ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ" WRITE(4,12) (U(I),I=1,NG)

STOP END

FUNCTION FB(R,TETA,FI) IMPLICIT REAL*8 (A-H,O-Z) COMMON AE,BE

FB=(AE*R*COS(FI)/V(R,TETA)/W2(R,TETA))*((BE-AE)*R*SIN(TETA)**2 0.5*((BE-

-AE)*R (AE BE)/R)*COS(2.*TETA)) R*SIN(TETA)*COS(FI)/ /V(R,TETA)**2

RETURN END

III. Заключение. По поводу получения полных версий описанных программ обращайтесь по электронному адресу: algazinsd@mail.ru или на адрес Института проблем механики РАН, 119526, Москва, проспект Вернадского д.101, к.1.

25

Алгазин Сергей Дмитриевич, Грошев Михаил Владимирович

Численные алгоритмы классической матфизики.

VI. Потенциальное обтекание тела вращения потоком несжимаемой жидкости.

Подписано к печати 2.09.2002. Заказ № 24-2002. Тираж 50 экз. ________________________________________________________

Отпечатано на ризографе Института проблем механики РАН 119526, Москва, пр-т Вернадского, 101

26

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?