COMMON/BUFDA/NBD,NCOL,IS,NA,LRECL,NREC,L,X(8000) Проверка нахождения следующей записи во внешней памяти
IS =18-LRECL IF(IS-I) 40,12,12
Запись находится во внешней памяти
12 DO 1! 1 = 1, NBD ST (1,I) = X(1S) IS = IS + 1 DO 15 1 = 1, NCOL P (1,I) = X(IS) IS = IS + 1 NR = X(IS) BN = X(IS + 1) BV = X(IS + 21 IS= IS+ 3-LRECL RETURN
Необходимо считывать последний записанный блок
IF (NREC) 100,100,41 NREC = NREC -1 BACKSPACE 2 READ (2) (X(J),J=!,L) BACKSPACE 2 IS=L + 1 GO TO 10
Нелогичная ошибка
100 WRITE (6,101)
10! FORMAT(0 ATTEMPT ТО READ BACK TOO MANY RECORDS.) STOP END
с с с с
Программа 20-19
SUBROUTINE SOLV
COMMON DIS(720,2),ST(60,60),Q(60,2),P(6a,2),PST(2),BN(2),BV(2) COMMON NDF,NBAND,NSIZ,NDFI,NP,NELEM,NCOLN,NDATA
NCOLN - число столбцов нагрузки NR = I - узлы с граничными условиями BN - 1 - закреплено, О - свободно BV - заданные перемещения NBAND - половина ширины ленты NDF - чисто степеней свободы
NDFI = NDF + 1,NSIZ = NBAND - NDF
DO 111 JJ= l.NDF
Проверка граничных условий
IF(NR.NE.l) GO TO 58
IF (ABS(BN(JJ)).LT..00O01) GO TO 58
ST!!=0
DO 5 J=!,NCOLN
5 PST(J) = BV(JJ) DO 8 J= 1,NCOLN
8 P(I,J) = -BV(JJ) + P(1,J)/ST(!,!)
DO 4 I = 2,NBAND: 4 ST(1,I) = ST(1,I)/ST(1,I)
ST(!.1) = -ST(1,1)
GO TO 60
Уравнение без граничных условий
58 STU = 1,/ST(!,1) DO 6 J= 1,NCOLN
6 PST(J) = P(!,J).ST!1 ST(!,1) = ST!1
60 CALL STORE (ST,P,NR,BN(JJ),BV(JJ))
DO 1! I=2,NBAND
DO 16 J= 1,NCOLN 16 P(I,J) = P(I,J)-ST(!,I).PST(J)