Моделирование переходного режима энергосистемы (Лабораторная работа № 9), страница 9

11  CLOSE(UNIT=3)

CLOSE(UNIT=4)

WRITE(5,101) Z2,Z3

101  FORMAT(1X,'DIFRK4: РАБОТА ЗАКОНЧЕНА. РЕЗУЛЬТАТ'

*'ЗАПИСАН' В ФАЙЛЫ ',A8,' I ',A8)

STOP

END

С

SUBROUTINE RNGKT4(N,X,H,Y,Y0,FNC)

C         ПОДПРОГРАММА РЕШЕНИЯ  СИСТЕМЫ   ДИФФЕРЕНЦИАЛЬНЫХ 

С        УРАВНЕНИЙ  dY/dx=F(x,Y)  С НАЧАЛЬТНЫМИ УСЛОВИЯМИ (ЗАДАС         ЧА ЛУКОШКИ) МЕТОДОМ   РУНГЕ-КУТТА  ЧЕТВЕРТОГО ПОРЯДКА

С         НА КАЖДОМ ВРЕМЕННОМ ШАГЕ С ЗАДАННЫМ ШАГОМ ПО С  х

C         ОБАЗНАЧЕНИЯ ПЕРЕМЕННЫХ:

C  N - КОЛИЧЕСТВО УРАВНЕНИЙ В СИСТЕМЕ (ВХОДНАЯ ВЕЛИС         ЧИНА)

C  X - ТЕКУЩАЯ  ЗНАЧИМОСТЬ  НЕЗАВИСИМОЙ  ПЕРЕМЕННОЙ  x (РАБОС         ЧАЯ И ВЫХОДНАЯ ВЕЛИЧИНА)

C  H - ШАГ ИЗМЕНЕНИЯ НЕЗАВИСИМОЙ ПЕРЕМЕННОЙ   x   (ВХОДC         НАЯ  ВЕЛИЧИНА)

C  Y0(N) - МАССИВ ЗНАЧЕНИЙ НАЧАЛЬНЫХ УСЛОВИЙ  ДЛЯ  ИНТЕГРАЛЬC         НЫХ ПЕРЕМЕННЫХ y1(0), y2(0), y3(0),.. НА  НАЧАЛО   КАЖС         ДОГО ШАГА. ПРИ ПЕРВОМ ОБРАЩЕНИИ   К  ПОДПРОГРАММЕ В

С         ЭТОМ МАССИВЕ ДОЛЖНЫ НАХОДИТСЯ НАЧАЛЬНЫЕ ЗНАС         ЧЕНИЯ  ИНТЕГРАЛЬНЫХ  ПЕРЕМЕННЫХ (ВХОДНЫЕ И РАБОС         ЧИЕ ВЕИЧИНЫ)

C  Y(N) - МАССИВ ТЕКУЩИХ ЗНАЧИЕНИЙ ИНТЕГРАЛЬНХ ПЕРЕМЕНС         НЫХ Y В ТЕЧЕНИЕ КАЖДОГО ШАГА (РАБОЧИЙ МАССИВ)

C  YF(N) - МАССИВ  ЗНАЧЕНИЙ ИНТЕГРАЛЬНЫХ  ПЕРЕМЕННЫХ  Y,

С         ИСПОЛЬЗОВАННЫХ В КАЧЕСТВЕ  АРГУМЕНТОВ  ПРИ ВЫЧИСЛЕНИИ

С         ФУНКЦИЙ F(x,Y) В ПРАВЫХ ЧАСТЯХ  УРАВНЕНИЙ (РАБОЧИЙ

С         МАССИВ)

C  F(N) - МАССИВ  ЗНАЧИМОСТЕЙ  ФУНКЦИЙ  F(x,Y) В ПРАВЫХ ЧАСТС         ЯХ  УРАВНЕНИЙ  (РАБОЧИЙ  МАССИВ).  ЗНАЧЕНИЯ ФУНКЦИЙ

С         РАСЧИТЫВАЮТСЯ ВО ВНЕШНЕЙ ПОДПРОГРАММЕ FNC, КОТОРАЯ ЦЕЛЕС         КОМ ОПРЕДЕЛЯЕТСЯ ВИДОМ ПРАВОЙ ЧАСТИ СИСТЕМЫ 

С         УРАВНЕНИЙ И ДЛЯ КАЖДОЙ НОВОЙ  СИСТЕМЫ СКЛАДЫВАЕТСЯ С            ПОЛЬЗОВАТЕЛЕМ ЗАНОВО

C  FNC - ИМЯ ВНЕШНЕЙ ПОДПРОГРАММЫ, В  КОТОРОЙ  РАСЧИТ.

С        ЗНАЧЕНИЯ ФУНКЦИЙ F(x,Y)  В  ПРАВОЙ  ЧАСТИ СИСТЕМЫ. С

ИМЯ ЭТОЙ ПОДПРОГРАММЫ В СПИСКЕ ФОРМАЛЬНЫХ ПАРАМЕС         ТРОВ ОПЕРАТОРА SUBROUTINE ЭТОЙ   ПОДПРОГРАММЫ  И  В

С         СПИСКЕ ФАКТИЧЕСКИХ ПАРАМЕТРОВ ОПЕРАТОРА CALL ПРАГРАС         ММЫ, КАКАЯ ЕЕ ВЫЗЫВАЕТ, МОЖЕТ БЫТЬ РАЗНЫМ, В ТАКОМ СЛУС         ЧАЕ В  ПРОГРАММЕ,  КОТОРАЯ  ЕЕ ВЫЗЫВАЕТ,  ЭТО  ИМЯ  ДОЛЖНО  С

БЫТЬ ОПИСАНО В ОПЕРАТОРЕ EXTERNAL

C  P(4), Q(4) - РАБОЧИЕ МАССИВЫ КАЭФ.,   ИСПОЛЬЗУЕМЫХ

С         ПРИ РЕАЛИЗЦИИ ФОРМУЛ  МЕТОДА РУНГЕ-КУТТА

С        ЧЕТВЕРТОГО ПОРЯДКА

DIMENSION Y(*),Y0(*),YF(10),F(10),P(4),Q(4)

DATA P/0.,0.5,0.5,1./,Q/1.,2.,2.,1./

C         НАЧАЛО ЦИКЛА ПО ЧЕТЫРЕМ   ТАКТАМ   РУНГЕ-КУТТА  НА

C         ПРОДОЛЖЕНИЕ КАЖДОГО ШАГА  Н  ПО x

4   DO 7 J=1,4

C         ВЫЧИСЛЕНИЕ НЕЗАВИСИМОЙ ПЕРЕМЕННОЙ x I ИНТЕГРАЛЬНЫХ

С        ПЕРЕМЕННЫХ Y КАК  АРГУМЕНТОВ  ФУНКЦИЙ  F(x,Y) В ПРАС         ВЫХ ЧАСТЯХ  УРАВНЕНИЙ

XF=X+P(J)*H

DO 5 I=1,N

5   YF(I)=Y0(I)+H*F(I)*P(J)

C         ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ ФУНКЦИЙ  F(x,Y) В ПРАВЫХ ЧАСТ

-С        ЯХ УРАВНЕНИЙ

CALL FNC(XF,YF,F)

C         ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ ИНТЕГРАЛЬНЫХ   ПЕРЕМЕННЫХ Y

С         НА НОВОМ ТАКТЕ

DO 6 I=1,N

6   Y(I)=Y(I)+H*F(I)*Q(J)/6.

7   CONTINUE

C         ПЕРЕСЫЛКА ЗНАЧЕНИЙ ИНТЕГРАЛЬНЫХ  ПЕРЕМЕННЫХ  В

С         МАССИВ Y0(N)

DO 8 I=1,N

8   Y0(I)=Y(I)

11  RETURN

END

С

C         ПОДПРОГРАММА  ВЫЧИСЛЕНИЯ  ПРАВЫХ  ЧАСТЕЙ И НЕИНТЕГРАЛЬС         НЫХ ПЕРЕМЕННЫХ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВС         НЕНИЙ

C         Система уравнений (11) к лабораторной работе N9)

C            di3/dt=R2/((R1+R2+R6)L3) (e1-e6-i3(R1+R6))-u5/L3

C            du5/dt=i5/C5

C         формулы для вычисления неинтегральных переменных системы (11)

C            i6=(-i5R2-u5-L3di3/dt)/R2

C            i5=i3

C            i2=-i5-i6

C            i1=i2+i3

C            u1=i1R1-e1

C            u2=i2R2

C            u3=L3di3/dt

C            u6=i6R6-e6

C            е1=Em1sin( t+ e1)

C            e6=Em6 sin( t+ е6)

SUBROUTINE PRAV(X,Y,F)

REAL L3,I1,I2,I5,I6

DIMENSION Y(*),F(*)

COMMON R1,EM1,FE1,R2,L3,C5,R6,EM6,FE6,OMEGA

*,I1,I2,I5,I6,U1,U2,U3,U6,E1,E6

C         вычисление правых частей системы (11)

E1=EM1*SIN(OMEGA*X+FE1/57.2958)

E6=EM6*SIN(OMEGA*X+FE6/57.2958)

F(1)=R2/((R1+R2+R6)*L3)*(E1-E6-Y(1)*(R1+R6))-Y(2)/L3

F(2)=Y(1)/C5

C         вычисление неинтегрированых переменных системы (11)

I6=(-Y(1)*R2-Y(2)-L3*F(1))/R2

I5=Y(1)

I2=-Y(1)-I6

I1=I2+Y(1)

U1=I1*R1

U2=I2*R2

U3=L3*F(1)

U6=I6*R6

RETURN

END