Главная страница сайта  Российские промышленные издания (узловые агрегаты) 

0 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

2, / 20Н

RETURN

SN =,EI0.3)

ПРИЛОЖЕНИЕ 20Б

Приведенные программы являются подпрограммами составления и решения уравнений методом редкозаполненных матриц (фронтальным методом).

С С С

с с с

Программа 20-14

SUBROUTINE FORMK

Программа предназначена для формирования верхнего треугольника компактной матрицы и матрицы-указателя

C0MM0N/C0NTR/TITLE(12),NP,NE,NB,NDF,NCN,NLD,NMAT, NSZF,LI,NT4

COMMON CORD( 100,2),NOP(200,4),IMAT(200),ORT(25,2),NBC(25),

NFIX(2S) 1,R1(200),SI(200,20),ISP(200,20) 2.ESTIFM(12,12)

Задание максимального числа членов

N MAX = 20 NOFF = 20

С С С

С С С

С С С С С С

Задание нулевых массивов

DO 300 N = l.NSZF

DO 280 М = l.NMAX 280 SI(N,M) = 0.

DO 290 M = 2,N0FF 290 ISP(N,M) = 0 300 ISP(N,I) = N

Обход no элементам

DO 400 N = 1,NE CALL STIFT2(N).

Возврат к ESTIFM как к матрице жесткости Засы.таа ESTIFM в SI и члена указателя в ISP

Обход сначала по строкам

С С С

С С С

DO 350Л= l.NCN NROWB = (NOP(N,JJ) - 1 ).NDF DO 350 J= l.NDF NROWB = NROWB + 1

I = 1-1-1

Затем обход по столбцам ESTIFM

II = 0

DO 330 КК = l.NCN NCOLB = (NOP(N,KK) - 1 )NDF DO 330 К = l.NDF NCOLB = NCOLB -)- 1 11 = 11-1-1

•Пропуск, ес.ти член лежит ниже диагонали

IF(NCOLB - NROWB) 330,302,302 302 CONTINUE

Поиск в ISP номера столбца

DO 310 М= 1,N0FF IF(ISP(NR0WB,M)- NCLOB) 305.320,305 305 IF(ISP(NROWB,M) 315,315,310 . 310 CONTINUE .

: Поиск свободного места для хранения NCOLB

315 ISP(NROWB,M) = NCOLB : Запись ESTIFM

320 SI(NROWB,M) = ESTIFM(I,II) + SI(NROWB,M)

С Конец цикла по столбцам

330 CONTINUE С Конец цикла по строкам

350 CONTINUE С Конец цикла по элементам

400 CONTINUE

С Учет граничных условий С

DO 500 N= 1,NB NX=10<«(NDF-1) I = NBC(N) NROWB = (I - 1).NDF



проверка каждой степени свободы

DO 490 М= l.NDF NROWB = NROWB + 1 ICON = NFIX(N)/NX IF(ICON) 450,450,420 .

Запоминание большого номера иа диагонали

420 SI(NR0WB,1) = SI NROWB,1).10..20

NFIX(N) = NFIX(N) - NX.ICON 450 NX = NX/10 490 CONTINUE 500 CONTINUE

RETURN

Программа 20-15

SUBROUTINE SOLVE Решает методом редкозаполненных матриц

C0MM0N/C0NTR/TITLE(12),NP,NE,NB,NDF,NCN,NLD,NMAT, NEQ,L1,NT4

COMMON CORD(100,2),NOP(200,4),IMAT(200),ORT(25,2),NBC(251, NFIX(25)

1,R(200),A(200,20),ITEM(200,20),IMET(200) NT = 20

с с с с

Пропуск, если число уравнении отрицательно Составление полной матрицы ITEM

IF(NEQ.LT.O) GO ТО 360 SYM 3

В противном случае заполнение ITEM по мере необходимости

DO 220 M=l,NT SYM 6

220 IMET(M) = ITEM(1,M) SYM 7

DO 340 N = 2,NEQ SYM 8

DO 280 M = I,NT SYM 9

IF(IMET(M)-N-f 1) 225,280,225 SYM 10

225 DO 240 L = 1,NT SYM И

IF(ITEM(N,L)) 230,260,230 SYM 12

230 IF(ITEM(N,L)-IMET(M)) 240,280,240 SYM 13

240 CONTINUE SYM 14

WRITE(6,i00)N SYM 15 100 FORMAT(43H ALLOWABLE SPACE EXCEEDED IN

EQUATION TABLE, 14) SYM 16

STOP SYM 17

260 ITEM(N,L =IMET(M) SYM 18

280 CONTINUE SYM 19

300 DO 320 M=1,NT SYM 20

320 IMET(M) = ITEM(N,M) SYM 21

С С С

370 380 400

340 CONTINUE 360 NEQ = IABS(NEQ) NEQM = NEQ- 1

Начало цикла по уравнениям

DO 520 I = 1,NEQM

Модификация вектора RHS

R(I) = R(I)/A(I,1)

Цикл по строкам необходимо исключить

DO 460 M = 2,NT IN = 1TEM(I,M) IF(IN) 365,480,365

Найти соответствующие строки

DO 380 N = 1,NT IA = 1TEM(IN,N) IF(IA) 370,400,370 IMET(IA) = N CONTINUE CONTINUE TEMP = A(I,M)/A(I,1)

Цикл no столбцам необходимо исключить

DO 420 N = I,NT IA = ITEM(I,N) IF(IA) 405,440,405 405 IF(IA-IN) 420,410,410 410 IM = IMET(IA)

Модификация элемента матрицы

A(IN,IM) = A(IN,IM) - TEMP.A(I,N) 420 CONTINUE

Модификация вектора нагрузки

440 R(1N) = R(IN)-R(I).A(I,M) 460 CONTINUE 480 CONTINUE

Пересылка строки для обратного хода

DO 500 M = 2,NT

A(I,M) = A(I,M)/A(I,1) 500 CONTINUE Б20 CONTINUE

R(NEQ) = RINEQ)/A(NEQ,1)

С С С

С С С

С С С

С С С

SYM 22 SYM 23 SYM 24

SYM 25

SYM 26

SYM 27 SYM 28 SYM 29

SYM 30

SYM 31

SYM 32

SYM 33

SYM 34

SYM 35

SYM 36

SYM 37

SYM 38

SYM 39

SYM 40

SYM 41

SYM 42 SYM 43

SYM 44 SYM 45 SYM 46

SYM 47

SYM 48

SYM 49

SYM 50

SYM 51



С С С

Обратный ход

DO 560 1В= 1,NEQM

I = NEQ-1B

DO 540 M = 2,NT

J = ITEM(1,M)

IF(J) 540,560,540 540 R(I) = R(I)-A(I,M).R(J) 560 CONTINUE

RETURN

SYM 52

SYM 53

SYM 54 SYM SYM

SYM 57

SYM 58

SYM 59

SYM 60

55 56

ПРИЛОЖЕНИЕ 20B

В ЭТОМ приложении приведен ряд подпрограмм, которые можно использовать для решения очень большого числа уравнений при ограниченной максимальной половине ширины ленты. Эти подпрограммы несовместимы с описанными ранее.

Как уже отмечалось в последней части подразд. 20.5.1, составление ансамбля и исключение выполняются параллельно и исключение жесткостных уравнений узла осуществляется сразу же после их составления. Подпрограмма SOLV используется для построчного исключения (число строк равно числу степеней свободы узла), а подпрограмма BSUB - для осуществления обратного хода, при котором вычисляются и реакции в граничных точках. Подпрограммы STORE и RDBK -две небольшие подпрограммы для запоминания и считывания модифицированных уравнений. Эти модифицированные уравнения не записываются по мере их составления на ленту, а временно хранятся во внешней памяти и записываются в виде блока при заполнении памяти. Подпрограмма INIT образует индексы, необходимые в вышеупомянутых подпрограммах. Она вызывается перед началом решения задачи.

а) Блок-схема подпрограммы 1NIT

Начало

Образование контрольных переменных

Вычисление длины записи

Возврат в основную программу

б) Блок-схема подпрограммы STORE

Начало

Проверка места во внешней памйти

Переписка данных ио памяти на ленту

Возврат в исходное положение счетчика индексов

Последовательная запись уравнений и граничных переменных вовнешнюю память с соответствующими индексами

Возврат в основную программу

в) Блок-схема подпрограммы RDBK

Начало

Проверка, находится ли еще запись во внешней ламяти

Прокручивание ленты в обратном HanpaCj нии и считывание в новый блок

Возврат в исходное положение счетчика индексов

Считывание уравнения, граничных переменных и соответствующих индексов

Возврат в основную программу



0 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