summaryrefslogtreecommitdiffstats
path: root/benchmarks/dc68.dat
blob: f90371bd1551b491877c3b2d6d7966b2ca679a98 (plain)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
BEGIN NEW DATA CASE
C     BENCHMARK DC-68                                                           
C         Illustration of MODELS using six of Laurent Dube's simple test cases           
C         1st of 16 data subcases.  This was taken from Laurent's file  TC1.DAT.  
C         July of 1995,  this is converted to the new  MODELS STAND ALONE  by
C         adding  STAND ALONE  to the  MODELS  declaration.  Also,  all data
C         between  ENDMODELS  & batch-mode plot cards (just BLANK) was deleted.
     0.1    1.00
       1       1       1       1       1      
MODELS STAND ALONE
STORAGE integer pages:0 real pages:0 ENDSTORAGE
MODEL tc1
 VAR a
 INPUT i
 EXEC
  a:=t
 ENDEXEC
ENDMODEL
USE tc1 AS tc1a
 INPUT i:=0
ENDUSE
RECORD tc1a.a AS a
ENDMODELS
C   Step      Time      MODELS
C                       A
C      0       0.0         0.0
C      1       0.1         0.1
C      2       0.2         0.2
C      3       0.3         0.3
C      4       0.4         0.4
C      5       0.5         0.5
C      6       0.6         0.6
C      7       0.7         0.7
C      8       0.8         0.8
C      9       0.9         0.9
C     10       1.0         1.0
C  Variable maxima :       1.0
C  Times of maxima :       1.0
C  Variable minima :       0.0
C  Times of minima :       0.0
BLANK card terminating plotting
BEGIN NEW DATA CASE
C         Illustration of MODELS using six of Laurent Dube's simple test cases           
C         2nd of 16 data subcases.  This was taken from Laurent's file  TC2.DAT.  
   0.001    0.01
       1       1       1       1       1      
MODELS
INPUT elec90 {v(NOD1)}
      elec91 {i(NOD2)}
      elec93 {switch(NOD2)}
      elec94 {imssv(NOD1)}
      elec95 {imssi(NOD2)}
MODEL TC2
 INPUT i[90..95]
 VAR a[90..95]
 EXEC a[90..95]:=i[90..95] ENDEXEC
ENDMODEL
USE tc2 AS tc2
 INPUT i[90]:=elec90
       i[91]:=elec91
       i[92]:=0
       i[93]:=elec93
       i[94]:=elec94
       i[95]:=elec95
ENDUSE
RECORD tc2.a[90] AS a90
       tc2.a[91] AS a91
       tc2.a[92] AS a92
       tc2.a[93] AS a93
       tc2.a[94] AS a94
       tc2.a[95] AS a95
ENDMODELS
  NOD1  NOD2               1.00
BLANK card after last electric network branch
  NOD2                                                MEASURING
BLANK card ends switches
14NOD1        100.0       50.0      -30.                         -1.0
BLANK card after last electric network source
  NOD1
C    Step      Time      NOD1       MODELS     MODELS     MODELS     MODELS     MODELS     MODELS
C                                   A90        A91        A92        A93        A94        A95
C ***  Phasor I(0) =  8.6602540E+01    Switch  "NOD2  "  to  "      "  closed in the steady-state.
C       0       0.0  86.6025404 86.6025404 86.6025404        0.0        1.0       -50.       -50.
C       1     .1E-2  97.8147601 97.8147601 97.8147601        0.0        1.0        0.0        0.0
C       2      .002  99.4521895 99.4521895 99.4521895        0.0        1.0        0.0        0.0
C       3      .003  91.3545458 91.3545458 91.3545458        0.0        1.0        0.0        0.0
BLANK card ends selective node voltage outputs
C       8      .008  -40.673664 -40.673664 -40.673664        0.0        1.0        0.0        0.0
C       9      .009  -66.913061 -66.913061 -66.913061        0.0        1.0        0.0        0.0
C      10       .01   -86.60254  -86.60254  -86.60254        0.0        1.0        0.0        0.0
C Variable maxima :  99.4521895 99.4521895 99.4521895        0.0        1.0        0.0        0.0
C Times of maxima :        .002       .002       .002        0.0        0.0      .1E-2      .1E-2
C Variable minima :   -86.60254  -86.60254  -86.60254        0.0        1.0       -50.       -50.
C Times of minima :         .01        .01        .01        0.0        0.0        0.0        0.0
BLANK card terminating plotting
BEGIN NEW DATA CASE
PRINTED NUMBER WIDTH, 12, 2, { Keep dT loop precision the same, but 2 blank separators
C         Illustration of MODELS using six of Laurent Dube's simple test cases           
C         3rd of 16 data subcases.  This was taken from Laurent's file  TC9.DAT.  
   0.001    0.01
       1       1       1       1       0      
MODELS
OUTPUT tacs1, tacs2, arcsh, arcch, arcth
MODEL tc9
 INPUT i {dflt:0}
 VAR tacs[1..2]
 OUTPUT tacs[1..2]
 EXEC
  tacs[1]:=cos(2*pi*1000/6*t)
  tacs[2]:=sin(2*pi*1000/6*(t+startstep))
 ENDEXEC
ENDMODEL
USE tc9 AS tc9
 OUTPUT tacs1:=tacs[1]
        tacs2:=tacs[2]
ENDUSE
C  21 September 2002,  add HYPER to demonstrate corrected hyperbolic functions.
C  Previously, the inverse sinh, cosh, and tanh were missing.  Dube did not halt
C  execution, however.  Instead, he returned impossible function valu 88888.88..
C  as first reported by Orlando Hevia of Santa Fe, Argentina.  WSM corrects XPR2
C  Note the internal names such as  arcsinhyperbolic  are impractically long.
C  This is done on purpose to demonstrate Dube's flexibility in this regard.
MODEL HYPER  --  module that serves only to verify 3 inverse hyperbolic function
 VAR    arcsinhyperbolic, arccoshyperbolic, arctanhyperbolic, arg
 OUTPUT arcsinhyperbolic, arccoshyperbolic, arctanhyperbolic
EXEC
  arg := 200 * T  --  argument of 3 function usages to follow
  arcsinhyperbolic := ASINH( arg )  --  test hyperbolic arc sine over [0, 2]
    IF  arg >= 1.0    -- if arg of arc cosh is possible & arc tanh is impossible
    THEN
  arccoshyperbolic := ACOSH( arg )  --  test hyperbolic arc cosine over ...
  arctanhyperbolic := -9999.  
    ELSE  -- Alternate, if arg of arc cosh is impossible & arc tanh is possible:
  arccoshyperbolic := -9999.  
  arctanhyperbolic := ATANH( arg )  --  test hyperbolic arc tangent over ...
    ENDIF
ENDEXEC
ENDMODEL
USE HYPER AS HYPER
 OUTPUT ARCSH:=arcsinhyperbolic  --  ATP output name ARCSH is connected to internal model name
 OUTPUT ARCCH:=arccoshyperbolic  --  ATP output name ARCCH is connected  ...
 OUTPUT ARCTH:=arctanhyperbolic  --  ATP output name ARCTH is connected  ...
ENDUSE
RECORD tacs1 AS tacs1
       tacs2 AS tacs2
       arcsh AS arcsh
       arcch AS arcch
       arcth AS arcth
ENDMODELS
  NOD1  NOD2               1.00
  TACS2 NOD2               1.00
  NOD2  NOD3               1.00
BLANK card after last electric network branch
  NOD2                                                MEASURING
13NOD3                                                                TACS1   1
BLANK card ends switches
17TACS2
14NOD1        100.0       50.0                                   -1.0
60TACS2
BLANK card after last electric network source
  TACS2
C  First  1     output variables are electric-network voltage differences (upper voltage minus lower voltage);
C  Next   5     output variables belong to MODELS (with "MODELS" an internally-added upper name of pair).
C   Step      Time       TACS2       MODELS      MODELS      MODELS      MODELS      MODELS
C                                    TACS1       TACS2       ARCSH       ARCCH       ARCTH
C ***      Phasor I(0) =  1.0000000E+02                     Switch  "NOD2  "  to  "      "  closed in the steady-state.
C      0       0.0          0.0         1.0  .866025404         0.0      -9999.         0.0
C  Switch  "NOD3  "  to  "      "  closing after  1.00000000E-03  sec.
C      1     .1E-2   .866025404         0.5  .866025404   .19869011      -9999.  .202732554
C                                                Switch  "NOD3  "  to  "      "  opening after  2.00000000E-03  sec.
C      2      .002   .866025404         -.5  .56655E-15   .39003532      -9999.   .42364893
C      3      .003   .56655E-15         -1.   -.8660254  .568824899      -9999.  .693147181
BLANK card ends selective node voltage outputs
C      4      .004    -.8660254         -.5   -.8660254  .732668256      -9999.  1.09861229
C  Switch  "NOD3  "  to  "      "  closing after  5.00000000E-03  sec.
C      5      .005    -.8660254         0.5  -.1133E-14  .881373587         0.0      -9999.
C      6      .006   -.1133E-14         1.0  .866025404  1.01597313  .622362504      -9999.
C      7      .007   .866025404         0.5  .866025404  1.13798205  .867014726      -9999.
C                                                Switch  "NOD3  "  to  "      "  opening after  8.00000000E-03  sec.
C      8      .008   .866025404         -.5  .36738E-15  1.24898333  1.04696792      -9999.
C      9      .009   .36738E-15         -1.   -.8660254  1.35044074  1.19291073      -9999.
C     10       .01    -.8660254         -.5   -.8660254  1.44363548   1.3169579      -9999.
BLANK card terminating plotting
BEGIN NEW DATA CASE
PRINTED NUMBER WIDTH, 11, 1,        { Cancel preceding declaration (extra blank)
C         Illustration of MODELS using six of Laurent Dube's simple test cases
C         4th of 16 data subcases.  This was taken from Laurent's file  TC10.DAT  
     1.0     1.0
       1       1       1       1       1      
MODELS
MODEL test
COMMENT
 Provides a quick check on the use of nested pointlist functions
 for the representation of parametric curves.
 Here the parameter is the variable 'r',
 and the main functin is used as y=f(x,r)
 using a=mainfun(x) at various values of r.
ENDCOMMENT
 FUNCTION fun1 POINTLIST (-inf,inf), (0,0), (inf,-inf)
 FUNCTION fun2 POINTLIST (-inf,2*inf), (0,0), (inf,-2*inf)
 FUNCTION fun3 POINTLIST (-inf,3*inf), (0,0), (inf,-3*inf)
 FUNCTION fun4 POINTLIST (-inf,4*inf), (0,0), (inf,-4*inf)
 FUNCTION mainfun POINTLIST 
  (0,0),(1,fun1(r)),(2,fun2(r)),(3,fun3(r)),(4,fun4(r))
 FUNCTION ref(x,r):=-r*x  --Same function in its analytic form
 INPUT i
 VAR a,r
 INIT
  r:=-1
  WHILE r<5 DO
   r:=r+1
   write(' ')
   write('r:',r)
   FOR k:=0 to 3.5 by 0.5 DO
    a:=mainfun(k)
    write('  ',k,': ',a, '   ', ref(r,k))
   ENDFOR
  ENDWHILE
 ENDINIT
 EXEC
 ENDEXEC
ENDMODEL
USE test AS test
 INPUT i:=0
ENDUSE
ENDMODELS
  NOD1                     1.00
BLANK card after last electric network branch
BLANK card ends switches
14NOD1        100.0       50.0                                   -1.0
BLANK card after last electric network source
  NOD1 
BLANK card ends selective node voltage outputs
C       Step      Time       NOD1                                                                                                       
C          0       0.0        100.                                                                                                      
C          1       1.0        100.                                                                                                      
C    Variable maxima :        100.                                                                                                   
C    Times of maxima :         0.0                                                                                                   
C    Variable minima :        100.                                                                                                   
C    Times of minima :         0.0                                                                                                   
BLANK card terminating plotting
BEGIN NEW DATA CASE
C         Illustration of MODELS using six of Laurent Dube's simple test cases           
C         5th of 16 data subcases.  This was taken from Laurent's file  TC11.DAT  
     0.1    1.00
       1       1       1       1       1      
MODELS
MODEL tc11
 VAR a
 INPUT i
 EXEC
  a:=t
  write ( 'Writing a line...' )
 ENDEXEC
ENDMODEL
USE tc11 AS tc11
 INPUT i:=0
ENDUSE
RECORD tc11.a AS a
ENDMODELS
  NOD1                     1.00
BLANK card after last electric network branch
BLANK card ends switches
14NOD1        100.0       50.0                                   -1.0
BLANK card after last electric network source
  NOD1
C          Step      Time      NOD1        TACS                                                                                            
C                                            A                                                                                               
C            0       0.0        100.        0.0                                                                                           
C            1       0.1        100.        0.1                                                                                           
C            2       0.2        100.        0.2                                                                                           
C            3       0.3        100.        0.3                                                                                           
BLANK card ends selective node voltage outputs
C            9       0.9        100.        0.9                                                                                           
C           10       1.0        100.        1.0                                                                                           
C      Variable maxima :        100.        1.0                                                                                        
C      Times of maxima :         0.0        1.0                                                                                        
C      Variable minima :        100.        0.0                                                                                        
C      Times of minima :         0.0        0.0                                                                                        
BLANK card terminating plotting
BEGIN NEW DATA CASE
C         Illustration of MODELS using six of Laurent Dube's simple test cases           
C         6th of 16 data subcases.  This was taken from Laurent's file  TC13.DAT  
     0.1    1.00
       1       1       1       1       1      
MODELS
MODEL test
 INPUT i
 VAR a, b
 HISTORY b
 EXEC
  a:=b {MAX:0.7}
  b:=t
 ENDEXEC
ENDMODEL
USE test AS test
 INPUT i:=t
 HISTORY b:=t
ENDUSE
RECORD test.a AS a
ENDMODELS
  NOD1                     1.00
BLANK card after last electric network branch
BLANK card ends switches
14NOD1        100.0       50.0                                    0.0
BLANK card after last electric network source
  NOD1
C        Step      Time        NOD1       TACS                                                                                            
C                                           A                                                                                               
C           0       0.0         0.0        -.1                                                                                           
C           1       0.1        100.        0.0                                                                                           
C           2       0.2        100.        0.1                                                                                           
C           3       0.3        100.        0.2                                                                                           
C           4       0.4        100.        0.3                                                                                           
BLANK card ends selective node voltage outputs
C           9       0.9        100.        0.7                                                                                           
C          10       1.0        100.        0.7                                                                                           
C     Variable maxima :        100.        0.7                                                                                        
C     Times of maxima :         0.1        0.9                                                                                        
C     Variable minima :         0.0        -.1                                                                                        
C     Times of minima :         0.0        0.0                                                                                        
BLANK card terminating plotting
BEGIN NEW DATA CASE
C    7th of 16 subcases was added 22 August 1998 to illustrate a supplemental
C    variable that extends through column 80.  Furthermore, it is unusual in
C    that it has no blank byte to the right of the equal sign in column 11.
C    The result is easily checked since, by inspection, it has value  9 + T.
C    For background text, see the July, 1998, newsletter.  Dr. Yuan Bin called
C    our attention to this problem.  But that was not the end.  It was about a
C    year later that Carlos Mata pointed to the weakness of the correction: it
C    failed if column 80 contained a closed parenthesis.  The correction was
C    fortified March 18, 1998,  and new variable  CARLOS  confirms correct
C    operation.  Note that the values of  I1FG50  and  CARLOS  are equal.
ABSOLUTE TACS DIMENSIONS
      10      90     100      20      30     400     350      60
     .02     .10
       1       1       0       0       
TACS STAND ALONE
99I1FG00  = 1.
99I1FG02  = TIMEX
99I1FG04  = 1.
99I1FG06  = 1.
99I1FG08  = 1.
99I1FG10  = 1.
99I1FG12  = 1.
99I1FG14  = 1.
99I1FG16  = 1.
99I1FG18  = 1.
98YUAN    =I1FG00+I1FG02+I1FG04+I1FG06+I1FG08+I1FG10+I1FG12+I1FG14+I1FG16+I1FG18
98CARLOS  =I1FG00+I1FG02+I1FG04+I1FG06+I1FG08+I1FG10+I1FG12+ 1.5*(I1FG14+I1FG16)
33YUAN  CARLOS
BLANK card ending all TACS data cards
BLANK card ending plot cards
BEGIN NEW DATA CASE
C    8th of 16 subcases was added 18 August 1998 to illustrate new request words
C    that are related to repeatability of random numbers,  or lack of it.  Here
C    we illustrate repeatability, but the non-repeatable case really is the more
C    important.  If the  REPEATABLE  card below is replaced by the comment card
C    that immediately precedes it,  the new initialization of OVER8 (see the
C    October newsletter) is demonstrated.  Previously,  ATP GNU answers differed
C    from Salford and Watcom answers.  Also illustrated is no output variable,
C    with  MODELS  doing all output.  Of course,  with only 2 energizations and
C    a dummy electric network,  this is just a demonstrative shadow of the real
C    data case of interest (Gabor Furst's BACKFL.DAT).  The dominant structural
C    feature is use of  MODELS  for all output of a SYSTEMATIC data case.  There
C    _is_  a base case,  although the engineering significance is not known.
TRULY RANDOM NUMBERS     { Alternative to following card removes repeatability
REPEATABLE RANDOM NUMBERS     { English-language override of NSEED 5 lines below
C    Note about preceding:  Since the TRULY declaration is overridden by the
C    REPEATABLE  declaration,  in fact the  TRULY declaration does nothing.  But
C    it does illustrate acceptance by ATP.
PRINTED NUMBER WIDTH, 13, 2,  { Request maximum precision (for 8 output columns)
    .060    .300   { Time step is artificially large (5 steps to completion)
       1       1       1       2       1      -1                      -2
C    ISW   ITEST   IDIST    IMAX   IDICE  KSTOUT                           NSEED
       0       1       0       0       1                                       1
       5       5      20      20      { Printout frequency changes for base case
MODELS HYBRID
STORAGE integer pages:0 real pages:0 ENDSTORAGE
MODEL tc1
 VAR angle
 INPUT i
   INIT angle:=0
   ENDINIT
 EXEC
    angle:= random()
C   write('   T =',  t,  '  MODELS random() yields =', angle )  
--- Only program output within dT loop is preceding output of variable ANGLE ---
C     To preceding output,  add the energization number  KNT  to demonstrate
C     that a 4-byte integer is handled properly by XPR1 for  WRITE(.  GNU ATP
C     uses different code of IEIGHT for this than for ISTEP.  WSM, 28 Aug 2010
    write('   T =',  t,  'KNT =', atp(knt),  'MODELS random() ==>', angle )
 ENDEXEC
ENDMODEL
USE tc1 AS tc1a
 INPUT i:=0
ENDUSE
C RECORD tc1a.angle AS angle  { If activates,  variable angle becomes ATP output
ENDMODELS
  GENA  A1                    1. 
  A1                          1.                                             
  ASW1                        1.                                             
BLANK card ending branch cards
  A1    ASW1       4.E-3     .2E-3         2          SYSTEMATIC
BLANK card ending switch cards
14GENA     303.       60.         0.0                        -1.
BLANK card ending source cards
BLANK card ending output variable requests (node voltages only, here)
  PRINTER PLOT
BLANK card ending plot cards (for base case only)
BLANK card ending statistical tabulate (none possible, since no output variable)
BEGIN NEW DATA CASE
C   9th of 16 subcases is a meaningful case from Trainee Rod Price of BPA, who
C   assembled and tested the data during the summer  and  fall  of 1989.  The 
C   study  involves  the  500-kV Coulee-Raver overhead line,  and  the  model
C   includes series capacitors at Columbia.  These  capacitors  are protected 
C   by  nonlinear resistors  (ZnO modeling) that are monitored  and  bypassed 
C   using  MODELS.   To see more interesting simulation,  the  end-time  TMAX
C   should be increased to 100 msec.   Reformulated by Laurent Dube  8 Aug 91
C   following his correction of a MODELS bug for Bob Wilson at Univ. of Idaho
C   in Moscow.   It was observed that the answer of this 7-th subcase changed,
C   too (i.e., before it was wrong,  although perhaps not by much)!       
C   14 Sept 1993,  WSM  adds  $BLANK DATA  below to protect the user who has 
C   NOBLAN  of  STARTUP  equal to unity (equivalent to  $BLANK HALT  to halt if
C   a true blank card is found.   This  MODELS  data does use blank lines as 
C   comments,  and  MODELS  ignores the blanks.   The important thing is to
C   prevent EMTP data input from halting before  MODELS  receives the blanks!
C      14 October 2000,  the addition of one IF-statement to OVER16 (see 8th
C      subcase of DCNEW-16 and January, 2001, newsletter) changes the answers
C      of this subcase slightly.  To document this,  output variables are have
C      been made more relevant.  Differences follow the fault to ground.  From
C      the  .DBG  file,  the new logic is used 3 times:
C          OVER16 bypasses compensation.  J, T =  43   2.000000000000E-02
C          OVER16 bypasses compensation.  J, T =  43   3.150000000000E-02
C          OVER16 bypasses compensation.  J, T =  43   4.990000000000E-02
C      It is not surprising that the difference shows up after step 400, which
C      corresponds to that switch closure at T = 20 msec (1st of 3 uses).
C      The following comparison shows how extrema are affected only slightly:
C      Next   3     output variables are branch currents (flowing from the upper node to the lower node);
C      Next   5     output variables belong to MODELS (with "MODELS" an internally-added upper name of pair).
C      Step    Time       CR25A       CR20A       CRZ1A       MODELS      MODELS      MODELS      MODELS      MODELS
C                         CR30A       TERRA       CR20A       VCAPA       IZNA        PZNA        EZNA        GAPA
C      Old maxima :   27237.7816  15421.0962  .445513E-4  39549.6402  .445515E-4  .139454E10  .500879 E7         1.0
C      New maxima :   26931.1785  15312.52    .445513E-4  39549.6402  .445515E-4  .135464E10  .4929451E7         1.0
C      Times of both :    .03175       .0375       .0125       .0125       .0125        .028         .05       .0315
C      Old minima :   -7552.2441  -28033.65   -7291.149   -191594.73  -7291.149   .432745E-9         0.0         0.0
C      New minima :   -7466.2202  -28099.511  -7350.3614  -184341.43  -7350.3614  .432745E-9         0.0         0.0
C      Times of old :      .0378      .02865      .02815      .02815      .02815         0.0         0.0         0.0
C      Times of new :      .0378      .02865      .02805      .02805      .02805         0.0         0.0         0.0
C      About switching times, both have: Gap "CR25A "  to  "CR30A "  closing
C      after  3.15000000E-02  sec.  But openings differ by one time step:
C      Old:  Gap  "CR25A "  to  "CR30A "  opening after  4.98500000E-02  sec.
C      New:  Gap  "CR25A "  to  "CR30A "  opening after  4.99000000E-02  sec.
PRINTED NUMBER WIDTH, 12, 2,   { Cancel wider output of preceding subcase
$BLANK DATA       { Request old treatment of true blanks (not 
 .000050    .050     60.  
       1       9       1       3       1      -1
       5       5      20      20     100     100
C
MODELS HYBRID

INPUT -- declare names and function of all MODELS inputs from EMTP

        vc3a {v(CR30A)}   --   vc3a = voltage at node CR30A
        vc2a {v(CR20A)}   --   vc2a = voltage at node CR20A
        vc3b {v(CR30B)}   --   vc3b = voltage at node CR30B
        vc2b {v(CR20B)}   --   vc2b = voltage at node CR20B
        vc3c {v(CR30C)}   --   vc3c = voltage at node CR30C
        vc2c {v(CR20C)}   --   vc2c = voltage at node CR20C
        iznoa {i(CRZ2A)}  --  iznoa = current through switch at node CRZ2A
        iznob {i(CRZ2B)}  --  iznob = current through switch at node CRZ2B
        iznoc {i(CRZ2C)}  --  iznoc = current through switch at node CRZ2C

OUTPUT -- declare names of MODELS outputs to EMTP

        gapa, gapb, gapc  -- switch control signals

MODEL flash

comment ****************************************************************
*                                                                      *
*    Function: set or cancel the gap firing control signal             *
*    Inputs  : voltage and current across ZnO resistor                 *
*    Output  : the firing signal to the electrical ZnO component       *
*                                                                      *
************************************************************* endcomment

  INPUT  vcap   --  voltage difference across series caps  [Volts]
         iczn   --  ZNO current                            [Amps]

  DATA   Pset   --  power setting                          [Megajoules/msec]
         Eset   --  energy setting                         [Megajoules]
         fdel   --  firing delay                           [msec]
         fdur   --  firing duration                        [msec]
 
  VAR  power    --  power into ZnO resistor                [Watts]
       trip     --  gap firing control signal              [0 or 1]
       energy   --  energy into ZnO resistor               [Joules]
       tfire    --  time at which the gap was last fired   [sec]
 
  OUTPUT  trip

  HISTORY  INTEGRAL(power) {DFLT:0}

  INIT trip:=0
       tfire:=0
  ENDINIT

  EXEC
    ------------------------------------------------------------------
    power:=vcap*iczn
    energy:=INTEGRAL(power)
    ------------------------------------------------------------------
    IF  trip>0              -- is already firing
    AND t-tfire>fdur*1.e-3  -- has exceeded firing duration
    THEN
      trip:=0     -- cancel the firing signal
      tfire:=0    -- null the firing time
    ENDIF
    ------------------------------------------------------------------
    IF trip=0                        -- is not signaling to fire
    AND tfire=0                      -- firing condition not yet detected
    AND (    power  >= Pset * 1.e9   -- power setting exceeded
          OR energy >= Eset * 1.e6 ) -- energy setting exceeded
    THEN
      tfire:=t    -- set the firing detection time
    ENDIF
    ------------------------------------------------------------------
    IF trip=0                 -- is not signaling to fire
    AND tfire>0               -- firing condition has been detected
    AND t-tfire>=fdel*1.e-3   -- firing delay exceeded
    THEN
      trip:=1     -- set the firing signal
    ENDIF
    ------------------------------------------------------------------
  ENDEXEC

ENDMODEL  

USE flash AS flasha   ----------------------------------- PHASE A ------

  TIMESTEP MIN: 0.0005

  INPUT  vcap:=vc3a-vc2a   -- voltage across caps
         iczn:=iznoa       -- current through ZnO resistor

  DATA   Pset:= 1   -- power setting    [MJ/mS]
         Eset:= 9   -- energy setting   [MJ]
         fdel:= 4   -- firing delay     [msec]
         fdur:=20   -- firing duration  [msec]

  OUTPUT  gapa:=trip  -- passes value of 'trip' to MODELS variable 'GAPA'

ENDUSE -----------------------------------------------------------------

USE flash AS flashb   ----------------------------------- PHASE B ------

  TIMESTEP MIN: 0.0005

  INPUT  vcap:=vc3b-vc2b   -- voltage across caps
         iczn:=iznob       -- current through ZnO resistor

  DATA   Pset:= 1   -- power setting    [MJ/mS]
         Eset:= 9   -- energy setting   [MJ]
         fdel:= 4   -- firing delay     [msec]
         fdur:=20   -- firing duration  [msec]

  OUTPUT  gapb:=trip  -- passes value of 'trip' to MODELS variable 'GAPB'

ENDUSE -----------------------------------------------------------------

USE flash AS flashc   ----------------------------------- PHASE C ------

  TIMESTEP MIN: 0.0005

  INPUT  vcap:=vc3c-vc2c   -- voltage across caps
         iczn:=iznoc       -- current through ZnO resistor

  DATA   Pset:= 1   -- power setting    [MJ/mS]
         Eset:= 9   -- energy setting   [MJ]
         fdel:= 4   -- firing delay     [msec]
         fdur:=20   -- firing duration  [msec]

  OUTPUT  gapc:=trip  -- passes value of 'trip' to MODELS variable 'GAPC'

ENDUSE -----------------------------------------------------------------

RECORD  flasha.vcap   AS VCAPA       
        flasha.iczn   AS IZNA
        flasha.power  AS PZNA       
        flasha.energy AS EZNA
        flasha.trip   AS GAPA

ENDMODELS      
C  ---------------------   End  MODELS  data,  begin electric network:  
C   **** Series Capacitors, Xc = 28.4 ohms
C
  CR20A CR30A                         93.40                                     
  CR20B CR30B                         93.40                                     
  CR20C CR30C                         93.40                                     
C
  CR20D CR30D                         93.40                                    
  CR20E CR30E                         93.40                                    
  CR20F CR30F                         93.40                                    
C
C   **** Jumpers to help EMTP convergence with ZNO
C
  CRZ1A CRZ2A              0.01                                                 
  CRZ1B CRZ2B              0.01                                                 
  CRZ1C CRZ2C              0.01                                                 
C
  CRZ1D CRZ2D              0.01                                                 
  CRZ1E CRZ2E              0.01                                                 
  CRZ1F CRZ2F              0.01                                                 
C
C   **** ZNO protection for Caps, I=1.8KA, 2.2 PU, alpha = 40, Vref =147.5
C
92CRZ1A CR20A                          5555.                                   1
                  147500.                      -1.                             
                      1.0                      40.                      .80
                    9999.
92CRZ1B CR20B CRZ1A CR20A              5555.                                  
92CRZ1C CR20C CRZ1A CR20A              5555.                                  
C
92CRZ1D CR20D CRZ1A CR20A              5555.                                   
92CRZ1E CR20E CRZ1A CR20A              5555.                                   
92CRZ1F CR20F CRZ1A CR20A              5555.                                   
C
C   **** Source Impedances
C
51SRC1A RAVBA               0.1  20.0
52SRC1B RAVBB               0.1  18.5
53SRC1C RAVBC
C
51SRC1A RAVBA              300.0
52SRC1B RAVBB              150.0
53SRC1C RAVBC
C
C
51SRC2A GRCBA               0.1  7.00
52SRC2B GRCBB               0.1  10.7
53SRC2C GRCBC
C
51SRC2A GRCBA              350.0
52SRC2B GRCBB              150.0
53SRC2C GRCBC
C
C  *** LINE IMPEDANCES  Values have been 1/4 to get high fault MVA ****
C
51CR50A CR30A               0.5  14.0                                          
52CR50B CR30B                8.  52.0                                          
53CR50C CR30C                                                                  
C
51CR50D CR30D               0.5  14.0                                          
52CR50E CR30E                8.  52.0
53CR50F CR30F
C
51CR01A CR20A               0.4   9.0
52CR01B CR20B                5.  36.0
53CR01C CR20C
C
51CR01D CR20D               0.4   9.0                                       
52CR01E CR20E                5.   36.
53CR01F CR20F
C
C  *****  BYPASS IMPEDANCE ****
  CR20A CR25A              5.    0.23                                           
  CR20B CR25B              5.    0.23                                           
  CR20C CR25C              5.    0.23                                           
  CR20D CR25D              5.    0.23                                          
  CR20E CR25E              5.    0.23                                         
  CR20F CR25F              5.    0.23                                         
C   ****  PARALLEL RESISTOR
  CR20A CR25A              200.                                                
  CR20B CR25B              200.                                                 
  CR20C CR25C              200.                                                 
  CR20D CR25D              200.                                                
  CR20E CR25E              200.                                               
  CR20F CR25F              200.                                               
BLANK card ending program branch cards.
C  **** TACS CONTROLLED CAP BYPASS SWITCHES *******
C  ** SWITCH 1
12CR25A CR30A                                                   GAPA          11
12CR25B CR30B                                                   GAPB          1 
12CR25C CR30C                                                   GAPC          1 
C 12CR25D CR30D                                                   GAPD           1
C 12CR25E CR30E                                                   GAPE            
C 12CR25F CR30F                                                   GAPF            
  CR25D CR30D  -1.0        10.
  CR25E CR30E  -1.         10.
  CR25F CR30F  -1.         10.      
C
C   **** Main Breaker Switches
C
  RAVBA CR50A  -1.0      10.0                                                   
  RAVBB CR50B  -1.0      10.0                                                   
  RAVBC CR50C  -1.0      10.0                                                 
C
  RAVBA CR50D  -1.0      10.0                                                   
  RAVBB CR50E  -1.0      10.0
  RAVBC CR50F  -1.0      10.0
C
  GRCBA CR01A  -.006     10.0                                                 
  GRCBB CR01B  -.006     10.0                                                 
  GRCBC CR01C  -.006     10.0                                                 
C
  GRCBA CR01D  -1.0      10.0
  GRCBB CR01E  -1.0      10.0
  GRCBC CR01F  -1.0      10.0
C
C  *** ZNO current measuring switches  ***
C
  CR30A CRZ2A        -1.        1.
  CR30B CRZ2B        -1.        1.
  CR30C CRZ2C        -1.        1.
  CR30D CRZ2D        -1.        1.
  CR30E CRZ2E        -1.        1.
  CR30F CRZ2F        -1.        1.
  CR20A          0.01998       10.   { Fault switch, phase "a" to ground }     1
BLANK card terminating program switch cards
14SRC1A    440000.   60.       -20.0                          -1.      10.
14SRC1B    440000.   60.       100.0                          -1.      10.
14SRC1C    440000.   60.       220.0                          -1.      10.
14SRC2A    440000.   60.         0.0                          -1.      10.
14SRC2B    440000.   60.       120.0                          -1.      10.
14SRC2C    440000.   60.       240.0                          -1.      10.
C --------------+------------------------------
C From bus name |  Names of all adjacent busses.
C --------------+------------------------------
C        CR20A  |TERRA *CR30A *CRZ1A *CR01A *CR25A *CR25A *
C        CR30A  |CR20A *CRZ2A *CR50A *CR25A *
C        CR20B  |CR30B *CRZ1B *CR01B *CR25B *CR25B *
C        CR30B  |CR20B *CRZ2B *CR50B *CR25B *
C        CR20C  |CR30C *CRZ1C *CR01C *CR25C *CR25C *
C        CR30C  |CR20C *CRZ2C *CR50C *CR25C *
C        CR20D  |CR30D *CRZ1D *CR01D *CR25D *CR25D *
C        CR30D  |CR20D *CRZ2D *CR50D *CR25D *
C       Total network loss  P-loss  by summing injections =   8.848099600964E+07
C Output for steady-state phasor switch currents.
C      Node-K    Node-M           I-real            I-imag            I-magn  
C      CR25A     CR30A            Open              Open              Open   
C      CR25B     CR30B            Open              Open              Open   
C      CR25C     CR30C            Open              Open              Open      
C      CR25D     CR30D        9.29172435E+02   -1.77481409E+02    9.45970963E+02
C      CR25E     CR30E       -3.10882808E+02    8.93427637E+02    9.45970963E+02
C      CR25F     CR30F       -6.18289626E+02   -7.15946228E+02    9.45970963E+02
BLANK card terminating program source cards.
C End inject:  SRC2C   -220000.       440000.   -1191.301327068  2345.3572211208
C End inject:   -381051.1776652  -120.0000000   -2020.272665456     -120.5267278
C Step   Time       CR25A      CR25A      TACS       TACS       TACS        TACS
C                   CR30A      CR30A      VCAPA      IZNA       PZNA        EZNA
C ***      Phasor I(0) =  9.2917243E+02   Switch  "CR25D "  to  "CR30D "  closed
C ***      Phasor I(0) = -3.1088281E+02   Switch  "CR25E "  to  "CR30E "  closed
C ***      Phasor I(0) = -6.1828963E+02   Switch  "CR25F "  to  "CR30F "  closed
C            < <  Etc.  (many switch currents)  > >
C   0     0.0  -143.44999        0.0 143.449993 .28697E-11 .411659E-9        0.0
C   1   .5E-4  602.099261        0.0 -602.09926 -.68002E-6 .411659E-9        0.0
C   2   .1E-3  1347.43459        0.0 -1347.4346 -.15198E-5 .411659E-9        0.0
C   3  .15E-3   2092.2912        0.0 -2092.2912 -.23592E-5 .411659E-9        0.0
BLANK card ending output variables requests (none here, since all column 80)
C   300  .015  -23363.319        0.0 23363.3193 .263161E-4 .614832009 .014309206
C ***          Close switch  "CR20A "  to  "      "  after  2.00000000E-02  sec.
C   400   .02  37570.0647        0.0 -37570.065 -.42322E-4 1.59004745 .016928315
C   500  .025  56444.8022        0.0 -56444.802 -.63583E-4 3.58891722 .022232887
C   600   .03  183226.734        0.0 -183226.73 -5786.1028 .106017E10 .3650637E7
C            Gap     "CR25A "  to  "CR30A "  closing after  3.15000000E-02  sec.
C   700  .035         0.0 -4433.8226 22742.1728 .256182E-4 .582612436 .4929451E7
C   800   .04         0.0 -5450.0316 25576.0355 .288104E-4 .736855415 .4929451E7
C   900  .045         0.0 4627.82167  -23165.41 -.26095E-4 .604499203 .4929451E7
C            Gap     "CR25A "  to  "CR30A "  opening after  4.99000000E-02  sec.
C  1000   .05   -816.5929        0.0 3143.46664 .354099E-5 .011130982 .4929451E7
C Variable max:184341.425 26931.1785 39549.6402 .445516E-4 .135464E10 .4929451E7
C Times of max:    .02805     .03175      .0125      .0125       .028        .05
C Variable min: -39549.64 -7466.2202 -184341.43 -7350.3614 .411659E-9        0.0
C Times of min:     .0125      .0378     .02805     .02805        0.0        0.0
  PRINTER PLOT                                                                  
 194 5. 0.0 40.         CR25A CR30A             { Axis limits: (-0.747,   2.220)
BLANK card ending plot cards
BEGIN NEW DATA CASE
PRINTED NUMBER WIDTH, 12, 2, { Keep dT loop precision the same, but 2 blank separators
C     10th of 16 subcases was added 10 April 2011  to illustrate very simple use
C     of  POINTLIST  within  MODELS.  Data comes from Orlando Hevia of Santa Fe,
C     Argentina.  It  establishes the standard of comparison for his alternative
C     SEEK  function (see 11th subcase,  which produces the same answer).  Here
C     the (X,Y) points of  POINTLIST  number only 7.  For much larger numbers of
C     points (e.g., 20200 for Orlando's TFGNMOD.DAT), Dube's  POINTLIST  is much
C     too slow.  For much larger numbers of points,  use Orlando's new  SEEK  as
C     will be illustrated by the following subcase.  WSM.
     1.0   10.00     { Take ten steps, from 1 second to 10 seconds.  This is "T"
       1      -1   { Print every step;  do not bother saving points for plotting
MODELS STAND ALONE
MODEL SAMPLE
VAR
   X,Y,Z
FUNCTION R POINTLIST
(0, 69)
(2, 50)
(4, 142)
(5, 142)
(6, 188)
(8, 73)
(10, 100)
INIT
        X:=0
ENDINIT
EXEC
X:=R(T)
Y:=SQRT(X)*0.3
Z:=R(SQRT(X)*0.3)
ENDEXEC
ENDMODEL
USE SAMPLE AS SAMPLE
ENDUSE
RECORD
  SAMPLE.X AS X
  SAMPLE.Y AS Y
  SAMPLE.Z AS Z
ENDRECORD
ENDMODELS
C Column headings for the  3   EMTP output variables follow.  These are divided among the 5 possible classes as follows ....
C  Next   3     output variables belong to MODELS (with "MODELS" an internally-added upper name of pair).
C   Step      Time       MODELS      MODELS      MODELS
C                        X           Y           Z
C      0       0.0          69.  2.49198716  72.6314093
C      1       1.0         59.5  2.31408729  64.4480155
C      2       2.0          50.  2.12132034  55.5807358
C      3       3.0          96.  2.93938769  93.2118338
C      4       4.0         142.  3.57491259  122.445979
C      5       5.0         142.  3.57491259  122.445979
C      6       6.0         188.  4.11339276  144.608033
C      7       7.0        130.5   3.4270979  115.646503
C      8       8.0          73.  2.56320112  75.9072517
C      9       9.0         86.5  2.79016129  86.3474191
C     10       10.         100.         3.0         96.
BLANK CARD ENDING PLOT CARDS
BEGIN NEW DATA CASE
$DEPOSIT, JSEEDR=0      { Reinitialize random # generator as if no preceding use
C        Note: the preceding $DEPOSIT  is required because random # use here is
C              not the 1st of data case.  Preceding subcases roll dice.  Memory
C              of this is erased by setting JSEEDR to zero.   WSM.  29 July 2011
C              This is for addition of GAUSS.  Variable  NORMAL  below should be
C              identical in value to what is produced by TACS within subcase 2
C              of BENCHMARK DC-18.  This works well for this subcase,  but later
C              subcases then would have different random numbers.  In order not
C              to change the random numbers of following subcases,  we want to
C              restore at the end the JSEEDR value that exists at the beginning.
C              New logic of DEPOSI makes this possible.  See 2nd $DEPOSIT below.
$PREFIX, []    { $INCLUDE files are located in same place as this main data file
C     Preceding line allows the SEEK file to be remote if this main data file is
PRINTED NUMBER WIDTH, 12, 2, { Keep dT loop precision the same, but 2 blank separators
C     11th of 16 subcases was added  10 April 2011  to illustrate that Orlando
C     Hevia's new  SEEK  function of  MODELS  will produce the same answer as
C     the preceding 10th subcase,  which uses  POINTLIST.  Data is too small for
C     there to be a reason to use  SEEK  instead of  POINTLIST,  of course.  For
C     a more realistic illustration of the advantage of  SEEK,  see explanation 
C     of the EEUG list server dated 11 June 2011.  This includes the following 
C     paragraph:
C   The inadequacy of  MODELS  POINTLIST  for large data (many points of the 
C   piecewise-linear X-Y function) was documented in detail in a paper that 
C   was presented at the year-2006 EEUG conference.  See  "Determination of 
C   an optimized energy storage size for a wind farm based on wind forecasts"  
C   by Steve Völler,  Christian Müller, and Johannes Verstege of the 
C   University of Wuppertal in Germany.  In this case,  POINTLIST  functioned 
C   correctly, but was too slow to be practical.  Those German users give new 
C   meaning to the term industrial-strength.  Would a reader believe 105K 
C   pairs of (X, Y)?  Yes, letter K as in one thousand.  Mr. Dube obviously 
C   did not imagine such use when he programmed his original logic.  But 
C   Orlando Hevia's new  SEEK  now provides an efficient alternative without 
C   the need for compilation and linking of user-supplied source code.
C     This data too comes from Orlando Hevia of Santa Fe, Argentina.  WSM.
     1.0   10.00     { Take ten steps, from 1 second to 10 seconds.  This is "T"
       1      -1   { Print every step;  do not bother saving points for plotting
MODELS STAND ALONE
C 3456789012345678901234567890123456789012345678 -- Ruler for following optional 
C                 < File Name>    IPRMDL  KOMPAC    miscellaneous data card :
MODELS MISC. DATA dc68seek.            0       0
C               Note about preceding.  Special value  KOMPAC = 8765  is required
C               to bypass the check on (X,Y) points of the function.  Logic will
C               ensure that X never decreases (a fatal error).  It also discards
C               all but the end points of each string of three or more identical
C               Y values.  That is the 3rd of 3 params shown.  As for the first,
C               see the substantial note below.  Finally,  the middle parameter,
C               IPRMDL,  is just  IPRSUP  for the new  MODELS  code.   I.e.,  it
C               provides diagnostic printout control.   All 3 values will remain
C               in force unless redefined.  So,  for stacked subcases,  there is
C               no need for repeated definition unless values are to be changed.
MODEL SAMPLE
VAR X,Y,Z, NORMAL
FUNCTION seek FOREIGN seek {ixarg: 2}
FUNCTION gauss FOREIGN gauss {ixarg: 2}
EXEC
C    Of the three following  EXEC  lines,  the first and the third use Orlando's
C    new  SEEK  function which is defined by the  (X, Y)  pairs of  DC68SE37.DAT
C    where the root name  "DC68SEEK."  was read from the MODELS misc. data card.
C    The  "37"  that overwrites the  "EK"  of DC68SEEK corresponds to the second
C    argument of  SEEK.  If another function were involved,  it would correspond
C    to a different subscript (any # < 100 million is legal).  An arbitrary # of
C    such functions is allowed,  and  each can involve an arbitrary # of  (X, Y)
C    as long as List 20 has adequate unused space.  As for  .DAT  being the file
C    type,  this follows from  DATTYP  of  STARTUP  because the user's file name
C    ended with a period.  If there is no MODELS miscellaneous data, the default
C    disk file name  SEEKDATA.DAT  will be assumed by ATP.  WSM.
X:=SEEK(T, 37 )
Y:=SQRT(X)*0.3
Z:=SEEK(SQRT(X)*0.3, 37 )
C    In order that all data be seen,  let's document the content of DC68SE37.DAT
C    which contains just the following 7 formatted lines:
C 0, 69
C 2, 50
C 4, 142
C 5, 142
C 6, 188
C 8, 73        
C 10, 100
C    This is just usual free-format data.  Each line begins in column 1, and
C    the final line is known as ATP encounters an end-of-file mark.  Neither
C    comment lines nor $-cards nor inline comments are allowed.  This is not
C    an oversight.  Rather,  it is a way to speed execution for large files.
C    If the user wants to terminate his function prematurely,  however,  he
C    is allowed to add a line such as  "-9999., 0"  where the  -9999  is
C    interpreted as a software EOF.  For an illustration,  see subcase # 15.
C       For some reason, Dube does not accept an in-line comment on the
C       following function.  Perhaps not on any function?  So, strip it off:
C NORMAL:=gauss( T )  { Argument "T" in fact is unused, so is arbitrary
NORMAL:=gauss( T )
ENDEXEC
ENDMODEL
USE SAMPLE AS SAMPLE
ENDUSE
RECORD
SAMPLE.X AS X
SAMPLE.Y AS Y
SAMPLE.Z AS Z
SAMPLE.NORMAL AS NORMAL
ENDRECORD
ENDMODELS
C   MODELS "SEEK" function # 37 involves 7 pairs of (X,Y).  These are stored in List-20 SCONST cells 3 through 16.
C Column headings for the  4   EMTP output variables follow.  These are divided among the 5 possible classes as follows ....
C  Next   4     output variables belong to MODELS (with "MODELS" an internally-added upper name of pair).
C   Step      Time       MODELS      MODELS      MODELS      MODELS
C                        X           Y           Z           NORMAL
C      0       0.0          69.  2.49198716  72.6314093  .890624441
C      1       1.0         59.5  2.31408729  64.4480155  -.26382016
C      2       2.0          50.  2.12132034  55.5807358  -.41782888
C      3       3.0          96.  2.93938769  93.2118338   .66418476
C      4       4.0         142.  3.57491259  122.445979  .242122394
C      5       5.0         142.  3.57491259  122.445979  -.38464212
C      6       6.0         188.  4.11339276        142.   -.9889959
C      7       7.0        130.5   3.4270979  115.646503  -.26589058
C      8       8.0          73.  2.56320112  75.9072517  -.73063403
C      9       9.0         86.5  2.79016129  86.3474191  -.75107385
C     10       10.         100.         3.0         96.  .288485151
C   Size 11-20:     0     3 -9999 -9999  1744     0     0     0    23    15
C   The preceding line from 80-column case-summary statistics confirms that
C   15 cells of List 20 storage are being used by  SEEK.  There are 6 points
C   for a total of 12 values.  But for each function,  there are two extra
C   cells.  Finally,  the last function must be bounded by a blank,  so the
C   total is  2 * 6 + 2 + 1 = 15  as shown.
C       That was before adding  GAUSS  use.  After the addition, this becomes:
C   Size 11-20:     0     4 -9999 -9999  1838     0     0     0    23    17
$DEPOSIT, JSEEDR= -98789  { Flag for DEPOSI to restore value before previous use
C   Note about preceding line:  As this use begins on  31 July 2011,  service is
C   limited to a single variable (in this case,  JSEEDR).  For use here,  JSEEDR
C   is a random variable.  The user wants to restore whatever value  JSEEDR  had
C   at the instant it was zeroed by the preceding $DEPOSIT.  The user can not do
C   this manually (old logic)  because he does not know what the value was.  But    
C   ATP remembers the value within  DEPOSI,  and can do it.   WSM.  31 July 2011
BLANK CARD ENDING PLOT CARDS
BEGIN NEW DATA CASE
C     12th of 16 subcases  was  added  13 April 2011  to illustrate that Orlando
C     Hevia's new  EGAUSS  function of MODELS will perform Gaussian elimination.
C     This was the 1st of 4 stacked subcases within Orlando's  file  TFGNMOD.DAT
C     Solve the following 3 linear equations in 3 unknowns:
C        X1 + 4*X2 +   X3 = 7
C        X1 + 6*X2 -   X3 = 13
C      2*X1 -   X2 + 2*X3 = 5
C     THE INITIAL SOLUTION IS X1= 5, X2= 1, X3= -2,  x4=18
C     THE ELEMENT N+1 OF SOLUTION IS THE DETERMINANT OF the coefficient matrix
     0.2     1.0   { Take 5 time steps, changing the matrix at each new step
       1      -1   { Suppress accumulation of plot points,  which are unused
MODELS STAND ALONE
C 3456789012345678901234567890123456789012345678 -- Ruler for following optional 
C                 < File Name>    IPRMDL  KOMPAC    miscellaneous data card :
MODELS MISC. DATA dc68seek.            0       0
C THE FUNCTION CAN BE USED AS FOLLOW:
C
C SOLUTION[1..N+1]:= EGAUSS(N,MATRIX[1..N*N+N])
C
C EGAUSS FROM GAUSSIAN ELIMINATION
C
MODEL solve
FUNCTION egauss FOREIGN egauss {ixarg:100}
 VAR arg[1..12]
 VAR x[1..4]
EXEC
if t=0 then
 arg[1]:=1.0
 arg[2]:=4.0
 arg[3]:=1.0
 arg[4]:=1.0
 arg[5]:=6.0
 arg[6]:=-1.0
 arg[7]:=2.0
 arg[8]:=-1.0
 arg[9]:=2.0
 arg[10]:=7.0
 arg[11]:=13.0
 arg[12]:=5.0
endif
x[1..4]:=egauss(3,arg[1..12])
write( 'Solution vector X =',  x[1], x[2], x[3],  '  Determinant =', x[4] )
arg[1]:= arg[1]*2.0
arg[12]:= arg[12]+1.0
C   Warning about the following use of RANDOM,  which is the  MODELS  connection
C   to ATP's random number generator.  For  KOMPAR = 0  or 1  (set in  STARTUP),
C   answers will be different  every time  the data is simulated,  and different
C   program versions can not be compared  (e.g., GNU vs. Salford).  For purposes
C   of a test case, we want repeatability and comparability, so set  KOMPAR = 3.
C   Also, position within the data case (here, the 12th subcase) may be critical
C   since future random numbers depend on past random numbers.
arg[2]:=random()
C arg[2]:= arg[1] * arg[12] --- a deterministic alternative to preceding line
write('arg(1,12,2) =', arg[1], arg[12], arg[2] )
ENDEXEC
ENDMODEL
USE solve AS solve
ENDUSE
ENDMODELS
C    Because there is no electric network,  there is no usual output of the
C    time-step loop.  Once the dT loop begins,  the only output is from MODELS:
C  Blank card ends electric sources.  KCONST = 1     |BLANK  card ending dummy source that ATP added to  TACS  or  MODELS STAND ALONE
C  X vector = 5.0         1.0         -2.          Determinant = 18.
C  arg(1,12,2) = 2.0         6.0         .2328306E-9
C  Blank card ending requests for output variables.  |BLANK  card ending output requests (none) that ATP added to this  STAND ALONE
C  Column headings for the  0   EMTP output variables follow.  These are divided among the 5 possible classes as follows ....
C  X vector = 3.111111111 1.777777778 .7777777784  Determinant = 8.999999999
C  arg(1,12,2) = 4.0         7.0         .1608161E-4
C  X vector = .7096617728 2.741941174 4.161308814  Determinant = 30.99993567
C  arg(1,12,2) = 8.0         8.0         .1107408979
C  X vector = .1640999973 3.031236365 5.351518185  Determinant = 74.55703641
C  arg(1,12,2) = 16.         9.0         .763080108
C  X vector = -.104457932 3.219802884 6.214359374  Determinant = 159.9476796
C  arg(1,12,2) = 32.         10.         .1799780347
C  X vector = -.007328865 3.275392315 6.645025023  Determinant = 338.2800879
C  arg(1,12,2) = 64.         11.         .902878134
BLANK card ending plot requests
BEGIN NEW DATA CASE
C     13th of 16 subcases  has the same solution as the preceding.  It was added
C     30 April 2011 to illustrate the  LINSOL  alternative to  EGAUSS.  The data
C     is compatible except that no value for the determinant  of the coefficient
C     matrix is available.  About history,  SUBROUTINE LINSOL  was provided by
C     MODELS author Laurent Dube,  paid by BPA,  as part of the original user-
C     supplied source code of MODELS.  This dates to 1995 or 1996 (not part of
C     the original MODELS).  Comment cards document the source and use:
C        Solves [a]*x=b using Crout's method with partial pivoting
C        Reference: Numerical Recipes chapter 2.
C        Modifies [a] and b, and returns b=x
C        Returns ierr=1 if [a] is singular, else returns ierr=0
C        Uses divzro as the smallest possible divisor value
     0.2     1.0   { Take 5 time steps, changing the matrix at each new step
       1      -1   { Suppress accumulation of plot points,  which are unused
MODELS STAND ALONE
MODEL solve
FUNCTION linsol FOREIGN linsol {ixarg:100}
 VAR arg[1..12]
 VAR x[1..4]
EXEC
if t=0 then
C     As written,  LINSOL  has been connected using the interface of Orlando's
C     EGAUSS.  There is a complication, however.  EGAUSS  stored the matrix by
C     rows whereas  LINSOL  assumes storage by columns.  Note the difference:
C        1    2    3     4    5     6     7    8    9   --  Index of  MODELS
C       1,1  1,2  1,3   2,1  2,2,  2,3   3,1  3,2  3,3  --  Content for EGAUSS
C       1,1  2,1  3,1   1,2  2,2,  3,2   1,3  2,3  3,3  --  Content for LINSOL
C     I.e.,  one is the transpose of the other.  Of the 9 elements that must
C     be assigned,  only the 3 diagonal elements are unchanged.  One at a time:
  arg[1]:=1.0 -- Element (1,1) of EGAUSS is a diagonal, so remains unchanged
C arg[2]:=4.0  { Element (1,2) of EGAUSS had index 2,  so index 4 of LINSOL:
  arg[4]:=4.0
C arg[3]:=1.0   { Element (1,3) of EGAUSS had index 3,  so index 7 of LINSOL
  arg[7]:=1.0
C arg[4]:=1.0   { Element (2,1) of EGAUSS had index 4,  so index 2 of LINSOL
  arg[2]:=1.0
  arg[5]:=6.0 -- Element (2,2) of EGAUSS is a diagonal, so remains unchanged
C arg[6]:=-1.0  { Element (2,3) of EGAUSS had index 6,  so index 8 of LINSOL
  arg[8]:=-1.0
C arg[7]:=2.0   { Element (3,1) of EGAUSS had index 7,  so index 3 of LINSOL
  arg[3]:=2.0
C arg[8]:=-1.0  { Element (2,3) of EGAUSS had index 8,  so index 6 of LINSOL
  arg[6]:=-1.0
  arg[9]:=2.0 -- Element (3,3) of EGAUSS is a diagonal, so remains unchanged
C   That was for the 3x3 square matrix. The right-hand-side vector is unchanged:
 arg[10]:=7.0
 arg[11]:=13.0
 arg[12]:=5.0
endif
x[1..4]:=linsol(3,arg[1..12])
write( 'Solution vector X =',  x[1], x[2], x[3] )
arg[1]:= arg[1]*2.0
arg[12]:= arg[12]+1.0
C arg[2]:=random()  { Element (1,2) of EGAUSS had index 2,  so index 4 of LINSOL
  arg[4]:=random()
C write('arg(1,12,2) =', arg[1], arg[12], arg[2] )
write(  'arg(1,12,4) =', arg[1], arg[12], arg[4] )
ENDEXEC
ENDMODEL
USE solve AS solve
ENDUSE
ENDMODELS
C    Because there is no electric network,  there is no usual output of the
C    time-step loop.  Once the dT loop begins,  the only output is from MODELS:
C  Blank card ends electric sources.  KCONST = 1     |BLANK  card ending dummy source that ATP added to  TACS  or  MODELS STAND ALONE
C  X vector = 5.0         1.0         -2.
C  arg(1,12,4) = 2.0         6.0         .2328306E-9
C  Blank card ending requests for output variables.  |BLANK  card ending output requests (none) that ATP added to this  STAND ALONE
C  Column headings for the  0   EMTP output variables follow.  These are divided among the 5 possible classes as follows ....
C  X vector = 3.111111111 1.777777778 .7777777784
C  arg(1,12,4) = 4.0         7.0         .1608161E-4
C  X vector = .7096617728 2.741941174 4.161308814
C  arg(1,12,4) = 8.0         8.0         .1107408979
C  X vector = .1640999973 3.031236365 5.351518185
C  arg(1,12,4) = 16.         9.0         .763080108
C  X vector = -.104457932 3.219802884 6.214359374
C  arg(1,12,4) = 32.         10.         .1799780347
C  X vector = -.007328865 3.275392315 6.645025023
C  arg(1,12,4) = 64.         11.         .902878134
BLANK card ending plot requests
BEGIN NEW DATA CASE
C     14th of 16 subcases  was  added  17 April 2011  to illustrate that Orlando
C     Hevia's new  INVERT  function of  MODELS  will indeed invert a matrix.
C     Data comes from Orlando Hevia of Santa Fe, Argentina.
     1.0     5.0   { Take 5 time steps, changing the matrix at each new step
       1      -1   { Suppress accumulation of plot points,  which are unused
MODELS STAND ALONE
C    The input matrix is on the left,  its inverse is on the right:
C   ORIGINAL matrix           INVERSE CALCULATED WITH QPRO
C  1        2        3        -0.33333  0.151515  0.121212
C  4        2        5        0.666667  -0.48485  0.212121
C  6        3        2          -2E-17  0.272727  -0.18182
C
C DEFINE ALL THE VARIABLES TO BE PASSED TO INVERT AS OUTPUT
C    Since the matrix to be inverted is 3x3,  9 scalar variables are used :
VAR a1, a2, a3, a4, a5, a6, a7, a8, a9
C    Next come 4 scalar dimensions of the call to inversion routine INVERT:
C IXDATA: NUMBER ELEMENTS IN AN ARRAY XDATA OR ARGUMENTS, FOR EXAMPLE, THE
C         NUMBER OF EQUATIONS, A KEY TO INVERT OR TO CALCULATE DETERMINANT
C
C IXIN:   NUMBER OF ELEMENTS IN THE INPUT ARRAY XIN. SQUARE OF NUMBER OF
C         EQUATIONS IN THIS CASE
C
C IXOUT:  NUMBER OF ELEMENTS IN THE OUTPUT ARRAY XOUT. SQUARE OF NUMBER OF
C         EQUATIONS IN THIS CASE, 1 FOR DETERMINANT (NOt IMPLEMENTED)
C
C IXVAR:  NUMBER OF ELEMENTS IN HISTORY ARRAY, NOt USED IN THIS CASE
C
C    The following is the call to invert the matrix.  IXIN  is # of elements (9)
C    of the input matrix,  IXOUT  is the # of elements (9) of the output matrix.
C    The 1st and the 4th parameters  (IXDATA and IXVAR, respectively)  do not
C    depend on the matrix order (3 in this case).
MODEL invert FOREIGN invert {ixdata:1, ixin:9, ixout:9, ixvar:0}
USE invert AS invert
 DATA xdata[1]:=3   -- Order of the matrices involved (here, 3)
C    The following defines the 9 cells of the input matrix XIN.  Storage is by
C    rows. Note the trailing "t" which adds simulation time to each element of
C    the matrix at each time step :
 INPUT xin[1..9] := [ 1.0, 2.0, 3.0,
                      4.0, 2.0, 5.0,
                      6.0, 3.0, 2.0 ] + t
C    The following connects the 9 elements of the output matrix (the inverse)
C    with variable names  A1  through  A9.  This is done to interface with the
C    ATP output vector (the preceding subcase had no such connection, note) :
 OUTPUT a1:=xout[1],a2:=xout[2],a3:=xout[3],
        a4:=xout[4],a5:=xout[5],a6:=xout[6],
        a7:=xout[7],a8:=xout[8],a9:=xout[9]
ENDUSE
RECORD
       a1 AS a11
       a2 AS a12
       a3 AS a13
       a4 AS a21
       a5 AS a22
       a6 AS a23
       a7 AS a31
       a8 AS a32
       a9 as a33
ENDMODELS
C Column headings for the  9   EMTP output variables follow.  These are divided among the 5 possible classes as follows ....
C  Next   9     output variables belong to MODELS (with "MODELS" an internally-added upper name of pair).
C   Step    Time       MODELS      MODELS      MODELS      MODELS      MODELS      MODELS      MODELS      MODELS      MODELS
C                      A11         A12         A13         A21         A22         A23         A31         A32         A33
C      0     0.0   -.33333333  .151515152  .121212121  .666666667  -.48484848  .212121212         0.0  .272727273  -.18181818
C      1     1.0   -.31914894   .14893617  .127659574  .574468085  -.46808511  .170212766   -.0212766  .276595745  -.19148936
C      2     2.0   -.31147541  .147540984  .131147541  .524590164  -.45901639  .147540984  -.03278689  .278688525  -.19672131
C      3     3.0   -.30666667  .146666667  .133333333  .493333333  -.45333333  .133333333        -.04         .28         -.2
C      4     4.0   -.30337079  .146067416  .134831461  .471910112   -.4494382  .123595506  -.04494382  .280898876  -.20224719
C      5     5.0   -.30097087  .145631068   .13592233   .45631068  -.44660194  .116504854  -.04854369  .281553398   -.2038835
BLANK card ending plot requests
BEGIN NEW DATA CASE
$PREFIX, []    { $INCLUDE files are located in same place as this main data file
C     Preceding line allows the SEEK file to be remote if this main data file is
PRINTED NUMBER WIDTH, 12, 2, { Keep dT loop precision the same, but 2 blank separators
C     15th of 16 subcases  was added  21 April 2011  to illustrate extensions to
C     Orlando Hevia's  SEEK  function that were not tested by the preceding 11th
C     subcase.  Data is similar.  That is, function # 82 began as a copy of # 32  
C     but is more general in that two redundant (X, Y) points have been added
C     (to be omitted by ATP) and the software EOF is used, permitting arbitrary
C     comment information at the bottom of  DC68SE82.DAT  Erasure of a no longer
C     used  SEEK  function also is illustrated.
     1.0   10.00     { Take ten steps, from 1 second to 10 seconds.  This is "T"
       1      -1   { Print every step;  do not bother saving points for plotting
MODELS STAND ALONE
C 3456789012345678901234567890123456789012345678 -- Ruler for following optional 
C                 < File Name>    IPRMDL  KOMPAC    miscellaneous data card :
C MODELS MISC. DATA dc68seek.            9       0
MODEL SAMPLE
C   Of the 6 following variables,  the last is a dummy variable that is used for
C   SEEK function erasure only.  The returned funct value must be put somewhere.
VAR X,Y,Z, X37, X49, XDUM
FUNCTION seek FOREIGN seek {ixarg: 2}
EXEC
C    Before using function # 82,  let's use a second function, the old # 37:
  IF t<4.0 THEN   -- Execute only at the first 3 time steps
C          About the following  WRITE(  statement,  note lack of indentation and
C          use of apostrophes (not quotation marks)  to delimit the text.  These
C          two details are required to maintain any lower case within the text :
write( '    Use SEEK model # 37 for T < 4 only.' )
  X37:=SEEK(T, 37 )
  ENDIF           -- Terminate 4-line IF block  
  IF t=6.0 THEN   -- execute only on the 6th time step
write( '    Erase SEEK function # 37 at T =6.' )
  XDUM:=SEEK(T, -37 )
  ENDIF           -- Terminate 4-line IF block 
C    The following 3 lines use SEEK function # 82,  which is the same as # 37:
X  :=SEEK(T, 82 )
Y:=SQRT(X)*0.3
Z:=SEEK(SQRT(X)*0.3, 82 )
C    The following nested IF loop results in action only for steps 8 and 9:
  IF t>7.0 THEN   -- Execute only for time steps 8 or later
  IF t<10.0 THEN   -- Execute only for time steps 9 or earlier
write( '    Use SEEK model # 49 for T = 7 or 8 only.' )
  X49:=SEEK(T, 49 )
  ENDIF           -- Terminate inner 4-line IF block
  ENDIF           -- Terminate outer 6-line IF block
C    The following IF loop disconnects SEEK function # 49 on step 10:
  IF t=10.0 THEN   -- execute only on the 10th time step
write( '    Erase SEEK function # 49 at T =10.' )
  XDUM:=SEEK(T, -49 )
  ENDIF           -- Terminate 4-line IF block 
C    In order that all data be seen,  let's document the content of DC68SE82.DAT
C    which contains the following formatted lines.  Note the 4 consecutive
C    Y values 142 (points 3 through 6 inclusive).  Thus points 4 and 5 will be
C    omitted.  ATP will store only 7 (X,Y) pairs.  Note also the software EOF
C    (value X = -9999.) which allows arbitrary comment information to follow.
C 0, 69
C 2, 50
C 4, 142
C 4.3, 142,
C 4.7, 142,
C 5, 142
C 6, 188
C 8, 73        
C 10, 100
C -9999., 0,
ENDEXEC
ENDMODEL
USE SAMPLE AS SAMPLE
ENDUSE
RECORD
SAMPLE.X AS X
SAMPLE.Y AS Y
SAMPLE.Z AS Z
SAMPLE.X37 AS X37
SAMPLE.X49 AS X49
ENDRECORD
ENDMODELS
C    Use SEEK model # 37 for T < 4 only.
C    MODELS "SEEK" function # 37 involves 7 pairs of (X,Y).  These are stored in List-20 SCONST cells 3 through 16.
C    3 or more consecutive, identical Y has allowed the omission of     2  incoming (X,Y) points.  The next line reflects this fact.
C    MODELS "SEEK" function # 82 involves 7 pairs of (X,Y).  These are stored in List-20 SCONST cells 19 through 32.
C Blank card ending requests for output variables.  |BLANK  card ending output requests (none) that ATP added to this  STAND ALONE
C Column headings for the  5   EMTP output variables follow.  These are divided among the 5 possible classes as follows ....
C  Next   5     output variables belong to MODELS (with "MODELS" an internally-added upper name of pair).
C  Step      Time       MODELS      MODELS      MODELS      MODELS      MODELS
C                       X           Y           Z           X37         X49
C     0       0.0          69.  2.49198716  72.6314093         69.  88888.8889
C   Use SEEK model # 37 for T < 4 only.
C     1       1.0         59.5  2.31408729  64.4480155        59.5  88888.8889
C   Use SEEK model # 37 for T < 4 only.
C     2       2.0          50.  2.12132034  55.5807358         50.  88888.8889
C   Use SEEK model # 37 for T < 4 only.
C     3       3.0          96.  2.93938769  93.2118338         96.  88888.8889
C     4       4.0         142.  3.57491259  122.445979         96.  88888.8889
C     5       5.0         142.  3.57491259  122.445979         96.  88888.8889
C   Erase SEEK function # 37 at T =6.
C MODELS erasure of SEEK function # 37  at time  T = 6.00000E+00 sec has gained   16  cells of List 20.  IFSEM =   16
C     6       6.0         188.  4.11339276        142.         96.  88888.8889
C     7       7.0        130.5   3.4270979  115.646503         96.  88888.8889
C   Use SEEK model # 49 for T = 7 or 8 only.
C   MODELS "SEEK" function # 49 involves 4 pairs of (X,Y).  These are stored in List-20 SCONST cells 19 through 26.
C     8       8.0          73.  2.56320112  75.9072517         96.         73.
C   Use SEEK model # 49 for T = 7 or 8 only.
C     9       9.0         86.5  2.79016129  86.3474191         96.        86.5
C   Erase SEEK function # 49 at T =10.
C MODELS erasure of SEEK function # 49  at time  T = 1.00000E+01 sec has gained   10  cells of List 20.  IFSEM =   16
C    10       10.         100.         3.0         96.         96.        86.5
BLANK CARD ENDING PLOT CARDS
BEGIN NEW DATA CASE
C     16th of 16 subcases  was  added  29 April 2011  to  illustrate  high-order
C     comparison between  EGAUSS  (see subcase 12)  and LINSOL (see subcase 13).
C     The testing is ordered by using EGAUSS for order two (two equations in two
C     unknows).  Normally the data would consist of 4 cells for the 2x2 matrix 
C     [A] followed by 2 cells for the right hand side.  Instead,  cell 1 of the
C     6 must be the special reserved key 23456.  This is to be followed by five
C     parameters that dedicated code uses to generate the equation set.  Matrix
C     order N  is in cell 2.  The matrix will be symmetrical,  so transposition
C     (a difference between data of EGAUSS and data of LINSOL)  is not an issue.
C     An offidiagonal in cell (I,J) will be given value  -COEFF / SEPAR ** POWER
C     where  SEPAR = IABS ( I - J )  is the distance from the diagonal.  Each of
C     the diagonals  A(I,I)  will be the negative of the sum of all offidagonals
C     plus constant  DIAG.  The right hand side  B(I)  will equal  RHS.  So this
C     is the matrix of a set of resistors connecting each node with every other
C     node.  Ground is a node,  with  DIAG  being the admittance to ground.  RHS
C     is the injected current at each node.
C NEW LIST SIZES
C        0       0       0       0       0       0       0       0       0       0
C        0       0       0       0       0       0       0       0       0  100000
C        0       0       0       0       0   10000       0  126000       0       0
C   240000     742
C   About the preceding program dimensions, two are critical for high order use.
C   These are List 20 and  List 28.  Both are set to the limits of  LISTSIZE.BPA
C   A third,  List 26, must be twice the order of the equation set being solved.
C   In order to simplify things,  the limiting value for this too has been used.
C   If order 31 below is changed to order 310  (this is  arg[2]),  uncomment the
C   preceding five  NEW LIST SIZES  data cards by removing  "C "  from the left.
C   Expect execution to take about 1000 times as long, of course.  Note that 310
C   is close to the limit for List 20 equal to 100K since 3.1**2 is close to 10.
     0.2     1.0   { Take 5 time steps, changing the matrix at each new step
       1      -1   { Suppress accumulation of plot points,  which are unused
MODELS STAND ALONE
MODEL solve
FUNCTION egauss FOREIGN egauss {ixarg:100}
 VAR arg[1..6]
 VAR x[1..3]
EXEC
if t=0 then
 arg[1]:=23456.0 -- Reserved key to request test of LINSOL and EGAUSS
C arg[2]:=310.0  -- Matrix order of the equations being solved.  This is N
  arg[2]:= 31.0  -- Matrix order of the equations being solved.  This is N
 arg[3]:=2.0     -- Exponent to apply to separation.  This is POWER
 arg[4]:=1.0     -- Coefficient of matrix elements.   This is COEFF
 arg[5]:=1.0     -- Right hand side of each equation. This is RHS
 arg[6]:=31.0    -- Constant term of each diagonal.   This is DIAG
endif
x[1..2]:=egauss(2,arg[1..6]) -- The 1st arg, 2, is required for this test
ENDEXEC
ENDMODEL
USE solve AS solve
ENDUSE
ENDMODELS
BLANK card ending plot requests
BEGIN NEW DATA CASE
BLANK