www.chms.ru - вывоз мусора в Жуковском
Читаемые статьи

Читаемые книги

Ссылки


Главная >  Вычислительная гидроаэродинамика 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 [ 76 ] 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165

1 SUBROUTINE SOLVE(N,A,JPVT,B)

3 С SOLVES LINEAR SYSTEM, А*Х = В

4 С ASSUMES А IS FACTORISED INTO L.U FORM (BY FACT)

5 с RETURNS SOLUTION, X, IN В

7 DIMENSION A(50,50),JPVT(50),B(50)

9 С FORWARD ELIMINATION

10 С

11 NM = N - 1

12 DO 2 К s 1,NM

13 KP К + 1

14 L JPVT(K)

15 S B(L)

16 B(L) B(K)

17 B(K) S

18 DO 1 I = KP,N

19 B(I) = B(I) + A(I,K)*S

20 1 CONTINUE

21 2 CONTINUE

22 С

23 С BACK SUBSTITUTION

24 С

25 DO 4 KA = 1,NM

26 KM N - KA

27 К = KM + 1

28 B(K) B(K)/A(K,K)

29 S = - B(K)

30 DO 3 I = 1,KM

31 B(I) B(I) + A(I,K)*S

32 3 CONTINUE

33 4 CONTINUE

34 B(l) = B(l)/A(l,l)

35 RETURN

36 END

Рис. 6.16. Распечатка подпрограммы SOLVE.

наибольший ведущий элемент ai,k (FACT, строки 17-24). Если наибольший ведущий элемент равен нулю, то программа выдает сигнал ошибки [JPVT(N)=-1] и осуществляется возврат к основной программе.

В предположении о том, что наибольший ведущий элемент не равен нулю, осуществляется перестановка рядов (FACT строки 39-41), чтобы переместить наибольший ведущий элемент ai,k в положение (й, k). В каждом столбце / (/ = Л+ 1 N) коэффициенты t-й строки (t = fe+l, модифицируются (FACT, строки 38-46) в соответствии с формулой



Для экономии памяти решение V записывается на место использованного массива и выдается уже как массив В.

Реализация исключения по Гауссу в два этапа, соответствующих подпрограммам FACT и SOLVE, полезна в тех случаях, когда требуется строить решения для многих вариантов величины В в правой части уравнения (6.23). Это связано с тем, что для выполнения подпрограммы FACT требуется O(N) операций, тогда как SOLVE требует O(N) операций. Обе эти подпрограммы, представленные в несколько расширенной форме, подвергаются более тщательному обсуждению в книге [Forsythe et al., 1977, разд. 3.3].

Как правило, при использовании спектральных методов (§ 5.6) и панельных методов (§ 14.1) получаются матрицы А с плотной структурой. В противоположность этому методы конечных элементов и конечных разностей приводят к матрицам А разреженной структуры и, если используется методика расщепления (факторизации, § 8.2), матрицам узколенточной структуры.

Если матрица А разреженная, но не обязательно ленточная, то исключение по Гауссу часто осуществляется при введении А в память в форме одного массива, содержащего значения а-/ вместе со связанным с ним индикаторным массивом IA, обеспечивающим информацию о положении точки (f, /). Основная трудность, возникающая при программировании процесса гаус-совского исключения с разреженными матрицами, связана с вероятностью заполнения матрицы А. Иначе говоря, в процессе

Массивы хранятся в памяти вычислительных машин по столбцам (индекс i в а/,/). Поэтому наиболее целесообразно сделать так, чтобы самый внутренний цикл подпрограммы FACT (строки 43-45) реализовался по первому индексу.

Подпрограмма SOLVE прежде всего преобразует элементы вектора В (строки 12-21) с целью взаимодействия с ведущей строкой и модификации элемента bi, i=fe-f 1, Л, путем вычитания из него ведущей строки с соответствующим множителем, т. е.

&. = &/-()&ь (6.26)

что эквивалентно операции (6. 25) в подпрограмме FACT. Окончательное решение получается с помощью последовательных подстановок, реализуемых посредством подпрограммы SOLVE (строки 25-34). Это дает



исключения элементы матрицы А, первоначально равные нулю, становятся отличными от нуля. Различные методы надлежащего представления А и IA обсуждаются в книгах [Jennings, 1977а, гл. 5; Duff, 1981], последняя из которых предлагает более высокий уровень анализа. Существуют пакеты программ для реализации гауссовского исключения при разреженных матрицах; можно рекомендовать разработанные в Харуэлле программы МА28 и т. д., рассмотренные в вышеназванной книге Даффа.

6.2,2, Трехдиагональные системы: алгоритмы Томаса

Использование трехточечных конечно-разностных формул или конечных элементов с линейной интерполяцией приводит после расщепления (§ 8.2) к появлению матриц А в уравнении (6.23), имеющих трехдиагональную структуру. Использование конечно-разностных схем более высокого порядка или конечных элементов более высокого порядка приводит к ленточной структуре А, где ширина области ненулевых элементов будет больше. Алгоритм Томаса пригоден для решения уравнения (6.23) в случае трехдиагональной матрицы А. Обобщение алгоритма Томаса на случай пятидиагональной матрицы А описывается в п. 6.2.4. Если речь идет о системах уравнений, то матрица А имеет, как правило, блочную (трехдиагональную) структуру. Порядок действий в этом случае рассматривается в п. 6.2.5.

Если ненулевые элементы располагаются вблизи главной диагонали, то полезно рассмотреть те варианты исключения по Гауссу, которые используют преимущества ленточной структуры А. Один из примеров такого варианта соответствует рассмотренной в § 9.3 задаче о конвекции - диффузии. Если воспользоваться формулами с центральными разностями, то при обозначениях данного параграфа получается следующий алгоритм:

- (1 + 0.5?cell) Vi + 2Vi - (1 - 0.5?сеи) = О, (6.27)

при повторении которого по отношению к каждому узлу получим

(h 2 2

at bi Ci

-d, -

Vn~1

ds-i

Vn

(6.28)



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 [ 76 ] 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165


Чем хороши многотопливные котлы?



Нетрадиционное отопление



Детище отечественной Оборонки



Что такое автономное индивидуальное отопление?



Использование тепловых насосов



Эффективное теплоснабжение для больших помещений



Когда удобно применять теплые полы
© 1998 - 2024 www.300mm.ru.
При копировании материала обязательно наличие обратных ссылок.
Яндекс.Метрика