Версия 2, книга 1 (Система программного обеспечения на языке GPSS), страница 46
Описание файла
Файл "Версия 2, книга 1" внутри архива находится в папке "Система программного обеспечения на языке GPSS". Текстовый-файл из архива "Система программного обеспечения на языке GPSS", который расположен в категории "". Всё это находится в предмете "имитационное моделирование дискретных процессов" из 7 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "имитационное моделирование дискретных процессов" в общих файлах.
Просмотр 46 страницы текстового-файла онлайн
94 SAVEVALUE YVALUE,1000000 ;At time 0, Y is 1.
96 SAVEVALUE TIMEINCREMENT,0;Reset the HELP routine
100 ;
110 ; The following SAVEVALUE/HELP/ADVANCE loop ensures that the
120 ; maximum time increment between RUNGE-KUTTA accumulations
130 ; is not exceeded.
140 ;
150 EVALLOOP SAVEVALUE TIME,C1
160 HELP YVALUE,TIME,TIMEINCREMENT ;Use savevalues only.
170 ADVANCE X$TIMEINCREMENT
180 TRANSFER ,EVALLOOP
190 ;
200 ;
210 ; Timer Segment
220 ;
230 ;
240 GENERATE 3000000
250 ;
260 ; The following SAVEVALUE/HELP sequence must follow
270 ; any occurrence of GENERATE or ADVANCE which precedes
280 ; a reference to X$YVALUE in the same instant.
290 ; This updates X$YVALUE to the current value.
300 ;
310 SAVEVALUE TIME,C1
320 HELP YVALUE,TIME,TIMEINCREMENT ;Use savevalues only.
- 102 -
330 ;
340 ;
350 TERMINATE 1
360 ; The Plot is translated by subtracting 1000000.
370 ; 600000 on plot represents 1.6.
PLOT V$TRANSLATED,600000,0,2500000 ;Runge-Kutta Integration
START 1
Cодержимое файла HELP1.FOR имеет вид:
C
C GPSS/PC HELP-подпрограмма
C Если вы будете модифицировать эту HELP-подпрограмму,то вам
C необходимо откомпилировать ее Ryan-McFarland или Microsoft
C Fortran компилятором и затем редактировать ее с соответствующими
C GPSSxx.OBJ и MAINxx.OBJ модулями. Используйте ВАТ-файл LINKRM
C (для Ryan-McFarland FORTRAN) или LINKMS (для Microsoft FORTRAN).
C Для запуска GPSS/PC вместо введения GPSSPC введите GPSSMAIN.
C Каждый вход в HELP-блок будет выполнять вашу подпрограмму,
C COMMON-область будет содержать значения сохраняемых величин,
C специфицированных в GPSS HELP-блоке. Аргументы ограничены двой-
C ной точностью. Если вы изменяете содержимое переменных A-G
C HELP-программы, то эти изменения будут вводиться в соответствую-
C щие сохраняемые величины.
C
C Шаги создания HELP-программы.
C 1. Создайте исходную HELP-подпрограмму.
C 2. Компилируйте HELP-подпрограмму используя Ryan-McFarland
C или Microsoft compatible FORTRAN компилятор.
C 3. Компилируйте MAINxx.FOR, имеющимся у вас компилятором
C FORTRAN, только, если вам необходимо изменить вектор прерываний.
C 4. Используйте BAT-файл с именем LINKRM (Ryan-McFarland) или
C LINKMS (Microsoft) для создания GPSSMAIN.EXE.Вам будет необходимо
C модифицировать ВАТ-файл для использования ваших FORTRAN-библиотек.
C 5. Используйте GPSSMAIN вместо GPSSPC для начала сеанса рабо-
C ты с GPSS/PC. Если вы используете GPSSMAIN, то не сможете вво-
C дить GPSS/PC операторы в командной строке DOS. Однако, вы можете
C разместить операторы в файле STARTUP.GPS, который читается в на-
C чале сеанса.
C 6. Ваша HELP-подпрограмма будет выполняться при каждом входе
C сообщений GPSS в HELP-блок.
C
C
SUBROUTINE HELP
C У Фортрана нет аргументов, передаваемых в НELP-блок программы
C модели. Используйте вещественные переменные двойной точности A-G
C для интерфейса с HELP-блоком. При входе сообщения в HELP-блок пе-
C ременные A-G в COMMON-области HELP-программы будут содержать зна-
C чения входных сохраняемых величин, определенных в соответствующих
C операндах HELP-блока. Когда HELP-подпрограмма заканчивается, со-
C держимое переменных A-G возвращается тем же сохраняемым величинам.
C Если содержимое переменной REPAINT в HELP-подпрограмме не ну-
C левое при возврате управления в GPSS/PC, то экран дисплея пере-
C крашивается.
C
DOUBLE PRECISION A,B,C,D,E,F,G
DOUBLE PRECISION K0,K1,K2,K3
DOUBLE PRECISION H,HALFH,Y,T,THALFSTEP,TSTEP,MAXINTERVAL, LASTTIME
INTEGER*2 REPAINT
COMMON A,B,C,D,E,F,G,REPAINT
- 103 -
C
C
C HELP1.FOR, является HELP подпрограммой для HELP1.GPS
C
C Метод интегрирования Рунге-Кутта 4-го порядка применяется
C для решения следующих дифференциальных уравнений:
C
C y' = f(y,t), y(t0) = y0, где t - время моделирования
C
C
C Пример 1. y'=3t-2ty, y(0)=1.
C
C
YPRIME(Y,T)=3*T-2*T*Y
MAXINTERVAL=0.1
C
C Для интегрирования других функций, просто замените
C FUNCTION YPRIME.
C
C Максимальный размер шага равен 0.1 сек.
C
C Данные, получаемые из GPSS-модели:
C А - значение Y(n);
C B - текущее модельное время;
C С - 0 для первого входа, в остальных случаях - мак-
C симальное приращение времени. Когда С равен 0,
C A имеет значение Y(0).
C Данные, передаваемые GPSS-модели:
C А - значение Y(n+1);
C C - максимальный прирост модельного времени для
C следующего значения Y.
C
C
C
C **************************************** ************************
C
C Тело программы HELP
C
C
C **************************************** ************************
C
C
Y=A/1000000
T=B/1000000
C
C
C Шкала для секунд
C
C
C При первом входе просто инициализация и возврат
IF (C) 9999,9999,10
C Если не было сдвига модельного времени, то просто возвратиться
10 IF (T-LASTTIME) 9999,9999,20
C
C Здесь мы накапливаем величину y
C
20 H=C/1000000
HALFH=H/2
- 104 -
THALFSTEP=LASTTIME+HALFH
TSTEP=LASTTIME+H
K0=YPRIME(Y,LASTTIME)
K1=YPRIME(Y+HALFH*K0,THALFSTEP)
K2=YPRIME(Y+HALFH*K1,THALFSTEP)
K3=YPRIME(Y+H*K2,TSTEP)
Y=Y+(H/6)*(K0+2*K1+2*K2+K3)
C
C
C Перемасштабируем обратно к форме целого GPSS
C
C
A00000*Y
C Перед следующим накоплением возвращаемся к максимальному времени
C времени
9999 C00000*MAXINTERVAL
LASTTIME=T
RETURN
END
Для запуска HELP1.GPS введите
GPSSMAIN [CR]
и затем
@HELP1.GPS [CR]
После завершения моделирования и вывода данных ваш экран бу-
дет выглядеть, как показано на рис.1.
_____________________________ GPSS/PC ________________________________
TART 1
Runge - Kutta Integration
00000 „
ѓ
ѓ
ѓ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ
„ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ ЃЃЃЃЃ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ ЃЃЃЃЃЃЃЃЃЃ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃ
ѓ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃ
0 ђ””””””””””””””””””””””””””””””’”””””””” ””””””””””””””””””””””’
0 2500000
”””””””””””””””””””””””””””””””””””””””” ””””””””””””””””””””””””””””””
Ѓ <------------ Командная строка
Simulation Complete <--------- Строка состояния
Рис.1. Результаты прогона модели HELP1.GPS