Метод преобразования многолучевой звезды в полный многоугольник (Лабораторная работа № 4), страница 8

C Блок 4: Расчёт количества линейно независимых узлов (переменная KW);

C         создание массива номеров этих узлов (массив NW(KW));

C         KW1 - количество линейно независимых узлов схемы минус один;

C         (это количество узлов подлежит удалению программой ZHORTKA)

810 KW=0

DO 36 I=1,99

M=0

DO 35 K=1,KH

IF(I.EQ.N1K(K)) GO TO 34

IF(I.NE.N2K(K)) GO TO 35

34 M=1

35 CONTINUE

IF(M.EQ.0) GO TO 36

KW=KW+1

IF(KW.LE.70) GO TO 245

WRITE(5,244)

244 FORMAT(1X,'РАЗМЕРНОСЦЬ МАССИВОВ NW(70),KNNERAD(70),U(70),

*НЕДОСТАТОЧНАЯ ДЛЯ РЕШЕНИЯ ВАШЕЙ ЗАДАЧИ'/1X,'ТРЕБУЕТСЯ УВЕ

*ЛИЧЕНИЕ РАЗМЕРНОСТЕЙ МАССИВОВ В ОПЕРАТОРЕ DIMENSION')

223 WRITE(5,*)' ПРОГРАММА ZORKA НЕ МОЖЕТ ПРОДОЛЖИТЬ ВЫПОЛНЕНИЕ',

*' ВАШЕГО ЗАДАННИЯ И ЗАВЕРШАЕТ РАБОТУ'

STOP

245 NW(KW)=I

36 CONTINUE

KW1=KW-1

IF(NDRUK.EQ.0) GO TO 820

WRITE(3,*)' БЛОК 4',' KW=',KW,' NW(KW)=',(NW(I),I=1,KW)

C Блок 5: Обнуление массивов для падсчёта узловых напряжений

820 DO 50 I=1,KW

50 U(I)=0.

C Блок 6: Засылка номеров узлов в рабочие масiсиы для подпрограммы ZHORTKA

DO 40 I=1,KH

N1K1(I)=N1K(I)

40 N2K1(I)=N2K(I)

C Блок 7: Вызов подпрограммы ZHORTKA (Свёртка)

CALL ZHORTKA(N1K1,N2K1,Y,JY,NW,KW1,KH,KNNE,KNNERAD,YDIAG,JU,

*NSNNE,YNNE,NDRUK)

IF(NDRUK.EQ.0) GO TO 830

WRITE(3,*)' БЛОК 7',' KW=',KW,' KNNERAD(KW),YDIAG(KW),JU(KW)=',

*(KNNERAD(I),YDIAG(I),JU(I),I=1,KW)

WRITE(3,*)' KNNE=',KNNE,' NSNNE(KNNE),YNNE(KNNE)=',

*(NSNNE(I),YNNE(I),I=1,KNNE)

C      EREZ - результирующая ЭДС схемы относительно последнего узла, для которого  выC             полнялась свёртка

C      RREZ - результирующее сопротивление схемы относительно последнего узла

830 EREZ=JY(1)/Y(1)

RREZ=1./Y(1)

IF(NDRUK.EQ.0) GO TO 840

WRITE(3,*)' БЛОК 7',' EREZ=',EREZ,' RREZ=',RREZ

C Блок 8: Рассчёт узловых напряжений

840 U(KW)=EREZ

M=KW

C NK-номер конечного элемента i-той строки трыангуляавнай матрицы

NK=KNNE

55 M=M-1

M1=M+1

C NP-номар начального элемента i-той строки трыангуляванай матрицы

NP=NK-KNNERAD(M)

N=NP+1

DO 52 K=M1,KW

DO 51 L=N,NK

IF(NW(K).EQ.NSNNE(L))U(M)=U(M)+U(K)*YNNE(L)

51 CONTINUE

52 CONTINUE

U(M)=(U(M)+JU(M))/YDIAG(M)

NK=NP

IF(M.GT.1)GO TO 55

IF(NDRUK.EQ.0) GO TO 850

WRITE(3,*)' БЛОК 8',' U(KW)=',(U(I),I=1,KW)

C Блок 9: Расчёт токов в ветвях схемы

850 DO 63 I=1,KH

C N1-номер первого конца ветви

C N2- номер второго конца ветви

C U1-узловое напряжение первого конца ветви

C U2- номер второго конца ветви

N1=N1K(I)

N2=N2K(I)

IF(N1.EQ.0)GO TO 60

IF(N2.EQ.0)GO TO 152

GO TO 61

60 U1=0

61 DO 62 K=1,KW

IF(N2.NE.NW(K)) GO TO 62

U2=U(K)

62 CONTINUE

IF(N1.EQ.0)GO TO 155

GO TO 153

152 U2=0

153 DO 154 K=1,KW

IF(N1.NE.NW(K))GO TO 154

U1=U(K)

154 CONTINUE

155 IF(N1.GT.N2)GO TO 156

TOK(I)=(U2-U1-E(I))/R(I)

GO TO 63

156 TOK(I)=(U1-U2-E(I))/R(I)

63 CONTINUE

IF(NDRUK.EQ.0) GO TO 108

WRITE(3,*)' БЛОК 9',' TOK(KH)=',(TOK(I),I=1,KH)

C Блок 10: Запись результатов расчёта в выходной

C          файл AAAA.REZ, где AAAA - имя файла входных данных

108 WRITE(3,105)(NW(I),U(I),I=1,KW)

105 FORMAT(/' РЕЗУЛЬТАТЫ РАСЧЁТА:'/'Напряжения:'/

*'     Узел   Напряжений'/(I8,F14.5))

WRITE(3,201)(N1K(I),N2K(I),TOK(I),I=1,KH)

201 FORMAT('Токи:'/'       Ветвь схемы      Ток'/

*' (Дополнительным направлением тока в ветви считается направление'/

*' от конца  ветви с большим номером к концу с меньшим номером)'/

*(I12,I5,F12.4))

C Блок 11: Закрытие файла выходных данных на диск ЭВМ

CLOSE(UNIT=3)

C Блок 12: Выдача конечного результата на экран дисплея

WRITE(5,390)Z2

390 FORMAT(1X,'Программа ZORKA работу закончила. Рэзультаты расчёта зап

*исаны на диск в файл '1X,A8)

STOP

END

C

C

SUBROUTINE ZHORTKA(N1K,N2K,Y,JY,NW,KW,KH,KNNE,KHMPZWW,YSMPZWW,

* JMPZWW,NWMPZWW,YHMPZWW,NDRUK)

C Подпрограмма ZHORTKA выполняет свёртку схемы к узлу, номер которого

C   записан последним в массиве NW(KW+1)

C Входные переменные и массивы подпрограммы:

C   N1K(KH) - массив номеров "Первых" концов ветвей схемы

C   N2K(KH) - массив номеров "Вторых" концов ветвей схемы

C   Y(KH) - массив проводимостей ветвей схемы

C   JY(KH) - массив токов источников тока ветвей схемы

C   NW(KW+1) - массив номеров линейно независимых узлов схемы; последним в этом