BEGIN NEW DATA CASE C BENCHMARK DCNEW-19 C 18 February 1997, two new features enter the UTPF. These will be verified C by the following data. See April newsletter for details about: 1) Walter C Powell's analytical type-10 source; 2) $PARAMETER for both simple string C substitution and also mathematics at data-input time (Walter Powell pocket C calculator). The Type-10 function can be put in cols. 11-60 if it fits, or C can be continued onto cols. 11-40 of the following card ordered by CONT. in C columns 61-61 of the first. T-start and T-stop are always from ending card C August of 1998: replace Walter Powell's pocket calculator by one written C in Vancouver, USA. Story is scheduled for the October newsletter. $PARAMETER START ONLY { This block of 3 cards is used only before any $INCLUDE FIVEK= '5.E+3' { Within apostrophe ==> there is no math, just string replacement BLANK card ends $PARAMETER definitions 1.0 21. 1 1 $PARAMETER { This will be serviced by CIMAGE just as any other $-card would be C ONEOHM = 0.5 * ( 1.0 + "DELTAT" ) { Within quotes ==> value of this ATP variable ONEOHM = 0.5 * ( 1.0 + DELTAT ) { Beginning 28 Nov 98, quotes are no longer needed C OMEGA = "TWOPI" * .05 --- original frequency, equal to that of Type-14 COS C OMEGA_ = "TWOPI" * 0.1 { Speed the modulation of the ramp for visual effect OMEGA_ = TWOPI * 0.1 { Beginning 28 November 98, quotes no longer are necessary C ANGLE_ = .25 * "TWOPI" ANGLE_ = .25 * TWOPI { Beginning 28 November 98, quotes no longer are necessary BLANK card ends $PARAMETER definitions that are processed just b4 branch cards COS ONEOHM 1 SIN ONEOHM 1 SIN2 1.0 SIN3 1.0 A1 A2 5.E+3 1 A2 FIVEK BLANK card ends branch cards BLANK card ends switch cards (none, for this case) 14COS 1.0 .05 0.0 C 14SIN 3.0 .05 -90. ---- old form of following card: C 10SIN 3.0 * COS ( OMEGA * TIMEX - ANGLE ) { Walter Powell analytical source 10SIN .1 * TIMEX + .8 * COS ( OMEGA_ * TIMEX - ANGLE_ ) { Walter Powell analytical source 10SIN2 .1 * TIMEX + .8 * COS ( OMEGA_ * TIMEX - ANGLE_ ) CONT. { Note 61-65 + 0.2 { continuation carries T-start, T-stop in 61-80 } 1.5 18.5 C Note the preceding SIN2 repeats SIN but with extra vertical offset of 0.2 C on a continuation card. Also, SIN2 uses T-start (61-70) & T-stop (71-80) 10SIN3 IF( TIMEX .LE. 15. ) THEN { If simulation time < 16 sec: SIN3 = TIMEX * 0.10 { Linear ramp up with slope matching SIN ELSE { Alternatively (if 16 or more seconds): SIN3 = ( 23.5 - TIMEX ) * .20 { Linear ramp down, double the slope up ENDIF { Terminate 5-line block of Type-10 source C Note the preceding SIN3 creates a saw tooth with the peak broken off to C create a flat top. The value at 16 is equal to the value at 15. Note that C the name of the bus in columns 3-8 of the Type-10 source card is repeated C within the IF-block (left of equal signs). Control words IF( and ELSE C and ENDIF must begin in column 10 exactly as illustrated. As added on C 11 December 2000, ELSEIF( also should be legal, but is not being C illustrated in this data. 14A1 620000. .06 -50. BLANK card ends source cards SIN3 SIN SIN2 COS A2 C First 5 output variables are electric-network voltage differences (upper voltage minus lower voltage); C Next 3 output variables are branch currents (flowing from the upper node to the lower node); C Step Time SIN3 SIN SIN2 COS A2 COS SIN A1 C TERRA TERRA A2 C 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 C 1 1.0 0.1 .570084377 0.0 .951056516 272691.058 .951056516 .570084377 54.5382115 C 2 2.0 0.2 .960785678 1.16078568 .809016994 307819.308 .809016994 .960785678 61.5638615 C 3 3.0 0.3 1.06090928 1.26090928 .587785252 299715.25 .587785252 1.06090928 59.9430501 C 4 4.0 0.4 .870407977 1.07040798 .309016994 249517.077 .309016994 .870407977 49.9034154 C 5 5.0 0.5 .500237061 .700237061 .6123E-16 164274.972 .6123E-16 .500237061 32.8549944 C 6 6.0 0.6 .129975602 .329975602 -.30901699 55960.935 -.30901699 .129975602 11.192187 C 7 7.0 0.7 -.06076275 .139237247 -.58778525 -60212.649 -.58778525 -.06076275 -12.04253 C 8 8.0 0.8 .039067835 .239067835 -.80901699 -167929.55 -.80901699 .039067835 -33.585909 C 9 9.0 0.9 .42953207 .62953207 -.95105652 -252061.24 -.95105652 .42953207 -50.412247 BLANK card ends requests for program outputs (here, just node voltages) C 10 10. 1.0 .999688816 1.19968882 -1. -300791.68 -1. .999688816 -60.158335 C 11 11. 1.1 1.56996442 1.76996442 -.95105652 -307276.82 -.95105652 1.56996442 -61.455363 C 12 12. 1.2 1.96073982 2.16073982 -.80901699 -270605.84 -.80901699 1.96073982 -54.121169 C 13 13. 1.3 2.06095504 2.26095504 -.58778525 -195929.08 -.58778525 2.06095504 -39.185817 C 14 14. 1.4 1.87052788 2.07052788 -.30901699 -93734.666 -.30901699 1.87052788 -18.746933 C 15 15. 1.5 1.50038531 1.70038531 -.1837E-15 21624.5069 -.1837E-15 1.50038531 4.32490137 C 16 16. 1.5 1.13009557 1.33009557 .309016994 133946.582 .309016994 1.13009557 26.7893164 C 17 17. 1.3 .939283118 1.13928312 .587785252 227456.258 .587785252 .939283118 45.4912516 C 18 18. 1.1 1.03902209 1.23902209 .809016994 289020.378 .809016994 1.03902209 57.8040757 C 19 19. 0.9 1.42941218 0.0 .951056516 309992.446 .951056516 1.42941218 61.9984891 C 20 20. 0.7 1.99954057 0.0 1.0 287426.995 1.0 1.99954057 57.485399 C 21 21. 0.5 2.56984444 0.0 .951056516 224493.277 .951056516 2.56984444 44.8986554 CALCOMP PLOT 143 2. 0.0 20. -1. 3.0 COS SIN SIN2 SIN3 BLANK card ending plot cards BEGIN NEW DATA CASE C BENCHMARK DCNEW-19 C 2nd of 6 subcases is related to preceding. Analytical function is too C long, spilling over into T-start of columns 61-70. Demonstrate special C handling to reject such data in civilized fashion. 28 October 1998 1.0 21. 1 1 C 19 March 2009, WSM adds 2 unrelated symbol definitions HANSOK and HANSBAD. C But first, add a request to prohibit optimization by the pocket calculator. C Addition here is mandatory until an error in optimization of the compilation C is corrected. The troubled data are formulas for HANSOK and HANSBAD as C first reported by Prof. Hans Kr. Hoidalen in Trondheim, Norway. Without the C change making NOOPT = 1, execution would end on the HANSBAD input card with C an extraneous complaint about TACS (not being used). With use of NOOPT = 1, C the computation proceeds normally. Although this is not HFS data, the loop C counter should have default value KNT = 1 so the right hand side correctly C evaluates to 10**1 = 10. Execution still will end prematurely with that C complaint about too long an analytical function for SIN, but at least Prof. C Hoidalen's data is handled correctly. WSM. C $PARAMETER NOOPT=1 { Set optimization of pocket calculator compilation to none C Comment out preceding line 1 October 2011 after correction was made to the C code that handles TEMPx variables within POCKET.SPL and nowhere else. $PARAMETER { This will be serviced by CIMAGE just as any other $-card would be OMEGA_ = "TWOPI" * 0.1 { Speed the modulation of the ramp for visual effect ANGLE_ = .25 * "TWOPI" C Note about preceding quotation marks on 24 December 2000. Whereas the first C subcase demonstrated removal long ago, this use is retained in its original, C inefficient form as a demonstration of a new property. With the introduction C of non-volatile variables, the quoted TWOPI continues to work as expected, C but it now demonstrates a new power. The way MATDAT handle quotes, they are C erased, and the line is preceded by a temporary definition TWOPI = 6.2832 ... C which is taken as a SPY symbol (a variable in COMMON, recognized by SPY). In C fact the answer is correct, but COMMON is being modified without the user's C knowledge or intention. Old inefficiency (requiring a intermediate variable) C suddenly has been increased by unnecessary redefinition of a COMMON variable. HANSOK =10.**((KNT-1.)/20.+1.) { works. 1st of 2 formulas from HKH HANSBAD =10.**((KNT-1.)*0.05+1.) { fails 2nd of 2 formulas from HKH BLANK card ends $PARAMETER definitions that are processed just b4 branch cards COS 1.0 1 SIN 1.0 1 BLANK card ends branch cards C 2 April 2009, WSM adds unrelated IF-THEN block that includes an intermediate C variable only. Trouble using IF without a permanent variable was reported by C Prof. Hans Kr. Hoidalen in Trondheim, Norway. Although this is not HFS data, C the loop counter should have default value KNT = 1 making the IF-THEN block C legal. Add a dummy switch card to illustrate use of the permanent variable C CAP___ which depends on intermediate variable CAPI. Execution still will end C prematurely with that complaint about too long an analytical function for the C variable SIN, but at least Prof. Hoidalen's IF-THEN will be handled properly. C Note about the following IF(. The use of "equals one" C is arbitrary. Changing .EQ. to .NE. will force control C through the ELSE alternative, resulting in CAPI = 5.0 rather C than 2.3, and as a result, CAP___ = 10 (see next line) : C Parameter 1 defined. Value = 1.000000E+01 |CAP___ = 2.0 * CAPI $PARAMETER { This will be serviced by CIMAGE just as any other $-card would be IF( KNT .EQ. 1.0 ) THEN { This is equivalent (THEN on right is not required) CAPI = 2.3 $$ { The double dollar sign flags an intermediate variable, note ELSE { Alternatively (if not the first pass, so for KNT = 2 onward): CAPI = 5. $$ { The double dollar sign flags an intermediate variable, note ENDIF { Terminate 5-line block that defines intermediate symbol CAPI CAP___ = 2.0 * CAPI { Define A6 permanent variable to be used in later data BLANK card ending $PARAMETER block C Note about multiple intermediate variables within the IF-THEN block: C the logic probably would fail. As now constituted, one intermediate C variable is the limit within an IF-THEN block. But more than one IF-THEN C block is possible. To illustrate, let the desired second intermediate C variable CAPJ be defined within its own IF-THEN block as follows. Also C for variety, we will change ".EQ. 1.0" to ".NE. 1.0" to force the use C of the ELSE alternative: $PARAMETER { Separate $PARAM block ==> correct interpret line count within block C Added explanation of preceding line. Without it and preceding BLANK line, C the answer would be correct except for line # of interpretation, which would C not return to value 1 for the IF( statement. Restarting this at 1 is clearer C is clearer for the user who looks closely at such details. Numbering of the C interpretation then will be 1, 3, 4, and 5 instead of 3, 5, 6, and 7. IF( KNT .NE. 1.0 ) CAPJ = ( KNT + 0.5 ) ** 2 $$ { For KNT equal to 1, this gives CAPJ = 2.25 ELSE { Alternatively (if not the first pass, so for KNT = 2 onward): CAPJ = ( KNT - 0.5 ) ** 2 $$ { If KNT were equal to 1, this would give 0.25 ENDIF { Terminate 7-line block that defines symbols CAPI and CAPJ IND___ = CAPJ / 2.0 { Inductance in cols. 33-38 of following series R-L-C BLANK card ending $PARAMETER block C The following meaningless switch illustrates use of CAP___ & IND___ variables COS SIN CAP___ IND___ BLANK card ends switch cards 14COS 4.0 .05 0.0 C Ruler for T-start in 61:70: 1234567890 10SIN 0.1 * TIMEX + 0.8 * COS ( OMEGA_ * TIMEX - ANGLE_ ) { Too long function BLANK card ends source cards SIN SIN2 COS A2 BLANK card ends requests for program outputs (here, just node voltages) BLANK card ending plot cards BEGIN NEW DATA CASE C 3rd of 6 subcases illustrates Type-10 sources only. dT-loop output will be C identical to that produced by famous TACS and MODELS simulations (learning C how slow code from Laurent Dube really is). With extension to 100K steps C and proper control of output, this becomes MATHTY10 as first used to C time operation of POCKET (WSM's new pocket calculator). C That might have been 1998. Twelve years later, the inefficiency of MODELS C is widely known. So distorting the data a little is permissible. Addition C of the GAUSS function to both TACS and the pocket calculator will require C verification. DC-18 does the work for TACS. Here, on 10 October 2010, C we add such disconnected, unrelated output to the pocket calculator. WSM. PRINTED NUMBER WIDTH, 10, 2, { Request maximum precision (for 8 output columns) .02 2.0 1 1 0 0 1 -1 5 5 TEST1 1.0 TEST2 1.0 TEST3 1.0 TEST5 1.0 TEST6 1.0 TWO? 1.0 NORMAL 1.0 { A Gaussian random # will be applied to this BLANK card ends branch cards BLANK card ends switch cards (none, for this case) 10TEST1 10.0 * ( 1.0 + TIMEX ) ** 2 + 50. 10TEST2 1.E2 * COS ( 2.0 * 3.14159 * TEST1 / 100. ) 10TEST3 10.0 + 5.5 * TIMEX * SQRT ( ABS ( TEST2 ) ) 10TEST5 2.0 * 3.14159 * TEST1 / 100. 10TEST6 2.0 * SIN ( TEST5 ) C 10TWO? 2.E-4 * ( TEST2 ** 2 + 2500. * TEST6 ** 2 ) 10TWO? 2.000E-4 * ( TEST2 ** 2 + CONT. 2500. * { Remember that T-start and T-stop are on right of this card 1 TEST6 ** 2 ) { Illustrate conventional continuation line (1 in column C 6 preceded by 5 blanks). With or without CONT., any C number of continuation cards can follow the original 1 C or two (two if CONT. is used). This is like FORTRAN. 10NORMAL GAUSS ( 0.0 ) { Random function has zero mean and stand. deviation 1 BLANK card ending all sources TEST1 TEST2 TEST3 TEST5 TEST6 TWO? NORMAL C Step Time TEST1 TEST2 TEST3 TEST5 TEST6 TWO? NORMAL C 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 C 1 .02 60.404 -79.384 10.98007 3.795292 -1.21625 2.0 -.26382 C 2 .04 60.816 -77.7833 11.94029 3.821179 -1.25694 2.0 .6641848 C 3 .06 61.236 -76.0979 12.87873 3.847568 -1.29755 2.0 -.384642 BLANK card ending node voltage outputs C 90 1.8 128.4 -21.2 55.58307 8.067603 1.954539 2.0 1.195179 C 95 1.9 134.1 -54.1115 86.87076 8.425744 1.681897 2.0 .146522 C 100 2.0 140. -80.9013 108.9396 8.796452 1.175583 2.0 .9643848 C Variable maxima : 140. 99.99389 108.9396 8.796452 1.999977 2.0 3.103447 C Times of maxima : 2.0 1.24 2.0 2.0 1.74 .04 1.68 C Variable minima : 0.0 -80.9013 0.0 0.0 -1.99999 0.0 -2.77845 C Times of minima : 0.0 2.0 0.0 0.0 .58 0.0 .82 CALCOMP PLOT 143 .2 0.0 2.0 TEST1 TEST2 TEST3 143 .2 0.0 2.0 TEST5 TEST6 TWO? BLANK card ending plot cards BEGIN NEW DATA CASE C 4th of 6 subcases documents pocket calculator applied to many different C expressions. Use Type-10 sources, and take just 1 time step. Prior to C 16 November 2000, this was separate disk file POCKET.DAT Following C diagnostic line should be activated to see all assembler (precedes "EOF"). C For philosophy of this data, see the April, 2001, newsletter. C DIAGNOSTIC 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 9 9 9 9 9 C The following illustrates the ability to change dimensions (offset C subscripts for VOLTI storage) of the pocket calculator. Prior to C 12 November 2000, dimensions were 10 and 20, so the following example C shows what resulted: an error stop do to inadequate INDOFF. That was C prior to expansion of the default values of 60 and 120, which handle C the present data subcase without difficulty. C $PARAMETER INDOFF=10 KONST=20 { Fixed limits prior to improvement 12 Nov 00 C Halt in POCKET. Overflow JTOKEN into INDOFF. INDOFF, KCONST = 10 36 C Temporary error stop in ENTRY STOPTP of "WINDOW". NCHAIN, LASTOV = 5 4 C $PARAMETER INDOFF=60 KONST=120 { Do-nothing reassignment of default values $PARAMETER INDOFF=90 KONST=180 { Do-nothing reassignment of default values C Overhaul of storage for pocket calculator requires more List 4 space than C previously. Add NEW LIST SIZES on 6 August 2010. List 4 = 140 fails : NEW LIST SIZES { Request for a change to program table sizes (VARDIM input) DEFAULT 3.0 { Any blank field will be converted to 3 times default value 0 0 0 240 { List 4 < 840 of LISTSIZE.BPA is adequate BLANK card for lists 11-20. BLANK card for lists 21-30. 390 300 { Optional card for Lists 31, etc. --- as LISTSIZE.BPA 240000 742 { Offsets for supporting programs (non-simulation overlays) PRINTED NUMBER WIDTH, 11, 1, { Request maximum precision (for 8 output columns) .001 .001 1 -11 0 0 C Each analytical function will define a Type-10 source. In turn, this C must be connected to a node of the electric network. So, for each, C connect a 1-ohm resistor to ground: C 1st set of 10 variables ANG* is for 1st row of 132-column output vector: ANG1 1.0 ANG2 1.0 ANG3 1.0 ANG4 1.0 ANG5 1.0 ANG6 1.0 ANG7 1.0 ANG8 1.0 ANG9 1.0 ANG10 1.0 C Next set of 10 variables BAL* is for 2nd row of 132-column output vector: CC 1.0 DD 1.0 THETA 1.0 OMEGA 1.0 BAL1 1.0 BAL2 1.0 BAL3 1.0 BAL4 1.0 BAL5 1.0 BAL6 1.0 BAL7 1.0 BAL8 1.0 BAL9 1.0 BAL10 1.0 C Next set of 10 variables CAT* is for 3rd row of 132-column output vector: UNITY 1.0 ZERO 1.0 CAT1 1.0 CAT2 1.0 CAT3 1.0 CAT4 1.0 CAT5 1.0 CAT6 1.0 CAT7 1.0 CAT8 1.0 CAT9 1.0 CAT10 1.0 C Next set of 10 variables DUM* is for 4th row of 132-column output vector: DUM1 1.0 DUM2 1.0 DUM3 1.0 DUM4 1.0 DUM5 1.0 DUM6 1.0 DUM7 1.0 DUM8 1.0 DUM9 1.0 DUM10 1.0 C Next set of 10 variables EAT* is for 5th row of 132-column output vector: EAT1 1.0 EAT2 1.0 EAT3 1.0 EAT4 1.0 EAT5 1.0 EAT6 1.0 EAT7 1.0 EAT8 1.0 EAT9 1.0 EAT10 1.0 C Next set of 10 variables FAT* is for 6th row of 132-column output vector: FAT1 1.0 FAT2 1.0 FAT3 1.0 FAT4 1.0 FAT5 1.0 FAT6 1.0 FAT7 1.0 FAT8 1.0 FAT9 1.0 FAT10 1.0 C Next set of 10 variables GAS* is for 7th row of 132-column output vector: GAS1 1.0 GAS2 1.0 GAS3 1.0 GAS4 1.0 GAS5 1.0 GAS6 1.0 GAS7 1.0 GAS8 1.0 GAS9 1.0 GAS10 1.0 BLANK card ends branch cards BLANK card ends switch cards (none, for this case) C 1st set of 10 variables ANG* is for 1st row of 132-column output vector: 10ANG1 1.0 10ANG2 -1.0 10ANG3 ANG1 10ANG4 +ANG1 10ANG5 COS ( 1.0 ) 10ANG6 SIN ( ANG3 ) 10ANG7 SIN ( -ANG3 ) 10ANG8 - SIN ( - ANG3 ) 10ANG9 - ANG3 * ANG6 10ANG10 - SIN ( ANG3 ) C Next set of 10 variables BAL* is for 2nd row of 132-column output vector: 10CC 3.14159 10DD 2.71828 10THETA CC 10OMEGA DD 10BAL1 ( -CC + DD ) / ( -CC - DD ) 10BAL2 ( -CC - DD ) / 3.1415 10BAL3 ( -CC + DD ) / ( CC - DD ) 10BAL4 -( -CC + DD ) / ( CC - DD ) 10BAL5 THETA * OMEGA 10BAL6 THETA + OMEGA 10BAL7 THETA - OMEGA 10BAL8 THETA / OMEGA 10BAL9 THETA + OMEGA + ANG5 10BAL10 THETA + OMEGA + ANG5 - TIMEX C Next set of 10 variables CAT* is for 3rd row of 132-column output vector: 10UNITY 1.0 10ZERO 0.0 { In addition to these, remember CC = 3.14159 and DD = 2.71828 10CAT1 CC .EQ. DD { This is false, so CAT1 = 0.0 10CAT2 CC .NE. DD { This is true, so CAT2 = 1.0 10CAT3 CC .GT. DD { This is true, so CAT3 = 1.0 10CAT4 CC .LT. DD { This is false, so CAT4 = 0.0 10CAT5 CC .GE. DD { This is true, so CAT5 = 1.0 10CAT6 CC .LE. DD { This is false, so CAT6 = 0.0 10CAT7 .NOT. UNITY { UNITY is true, so toggle it to false: CAT7 = 0.0 10CAT8 UNITY .OR. ZERO { CAT8 = 1 since UNITY is true, & OR with anything is true 10CAT9 UNITY .AND. ZERO { CAT9 = 0 since ZERO is false, & AND with anything is false 10CAT10 UNITY .NOR. ZERO { CAT10 = 0 since OR first, then negate, so toggle CAT8 C 4th set of 10 variables DUM* is for 4th row of 132-column output vector: 10DUM1 UNITY .NAND. ZERO { DUM1 = 1 since AND first, then negate, so toggle CAT9 10DUM2 THETA / OMEGA + DD { DUM2 = 3.87400715 = 3.1416 / 2.718 + 2.718 10DUM3 THETA / OMEGA - DD { DUM3 = -1.562 = 3.1416 / 2.718 - 2.718 10DUM4 CC**DD { DUM4 = 22.459 = 3.1416 ** 2.718 10DUM5 50.0 + CC**DD { DUM5 = 72.459 = DUM4 + 50 10DUM6 TRUNC ( CC ) + INVRS ( CC ) { DUM6 = 3.318 = 3 (integer in 3.14) + 1 / 3.14 10DUM7 DEG ( CC ) { DUM7 = 180 (close) = 3.1416 converted to degrees 10DUM8 RAD ( DUM7 ) { DUM8 = 3.1416 = DUM7 deg converted back to radians 10DUM9 SIGN ( -CC ) - 3.0 { DUM9 = -4 = -1 - 3 = sign of ( -3.14 ) - 3 10DUM10 MINUS ( CC ) { DUM10 = -3.1416 = minus sign applied to Pi C 5th set of 10 variables EAT* is for 5th row of 132-column output vector: 10EAT1 SEQ6 ( DUM4 ) { EAT1 = 4 since DUM4 = 22.4590591 / 6 ==> 4.459 remainder 10EAT2 - LOG ( DD ) { EAT2 = -1 (close) since DD = 2.71828 is close to e 10EAT3 LOG10 ( 200. ) { EAT3 = 2.3010 since log(10) of 2 = .3010 10EAT4 ATAN ( UNITY ) { EAT4 = .785398 = atan ( 1.0 ) = pi / 4 = 3.1416 / 4 10EAT5 EXP ( 2.0 * UNITY ) { EAT5 = 7.389 = 2.71828 ** 2 10EAT6 ASIN ( -ONEHAF ) { EAT6 = -.5236 = -30 degrees / 57.29578 10EAT7 ACOS ( ONEHAF ) { EAT7 = 1.0471 = 60 degrees / 57.29578 10EAT8 RAN ( ZERO ) { EAT8 = .813467631 (arg = 0 ==> next random #) 10EAT9 TANH ( UNITY ) { EAT9 = .761594156 10EAT10 SINH ( UNITY ) / COSH ( UNITY ) { EAT10 = EAT9 by trig definition C 6th set of 10 variables FAT* is for 6th row of 132-column output vector: 10FAT1 TAN ( CC / 6.0 ) { FAT1 = .5773 since arg CC / 6 = Pi/6 = 30 degrees 10FAT2 2.0 * COTAN ( 60. / 57.29578 ) { FAT2 = 1.1547 = 2 * FAT1 10FAT3 1.0 / ABS ( UNITY * CC * DD ) { FAT3 = .1171 = 1 / ( 3.14 * 2.718 ) 10FAT4 - SQRT ( 2.0 ) * 0.5 { FAT4 = -.707 = sqrt ( 2 ) * 1/2 10FAT5 - 2.0 ** 2 + UNITY { FAT5 = -3 = -4 + 1 10FAT6 (-2.0) ** 2 + UNITY { FAT6 = 5 = 4 + 1 10FAT7 - EXP ( UNITY * CC / DD ) - 0.1 { FAT7 = -3.276 = -EXP ( 3.14 / 2.718 ) - 0.1 10FAT8 ( UNITY / DD * CC ) * 2.0 - UNITY { FAT8 = 1.311 = ( 3.1416 / 2.718 ) * 2 - 1 10FAT9 UNITY - ( UNITY * DD + CC ) { FAT9 = -4.860 = 1 - ( 3.14 + 2.718 ) 10FAT10 UNITY * DD - CC { FAT10 = -.4233 = 2.718 - 3.14 = 1 * 2.718 - 3.1416 C 7th set of 10 variables GAS* is for 7th row of 132-column output vector: 10GAS1 UNITY * ( CC / DD / UNITY ) { GAS1 = 1.156 = 3.14 / 2.718 = Pi / e / 1 10GAS2 CC ** 2 + DD ** 2 { GAS2 = 17.26 = 3.14 ** 2 + 2.718 ** 2 10GAS3 CC ** 2 - DD ** 2 { GAS3 = 2.48 = 3.14 ** 2 - 2.718 ** 2 C 3 December 2001, add variables to confirm correction of the error C first reported by Orlando Hevia using data EXP.DAT Note GAS4 C through GAS9 all have same value EXP(-T) = 1 / EXP(.001) = .999 10GAS4 1.0 / EXP ( TIMEX ) { This establishes the right answer (no bug here) 10GAS5 EXP(-(TIMEX*1.0)) { Hevia showed that this, too, always was correct 10GAS6 EXP ( -TIMEX ) { Hevia showed that this, too, always was correct 10GAS7 EXP( -TIMEX * 1.0 ) { Prior to correction on 3 December, error stop 10GAS8 EXP( -TIMEX / 1.0 ) { Prior to correction on 3 December, error stop 10GAS9 EXP( -TIMEX * UNITY ) { Prior to correction on 3 December, error stop 10GAS10 28.0 - 25.0 - ( TIMEX - 1.0 ) { Verify correction on 9 January 2002 BLANK card ending all sources ANG1 ANG2 ANG3 ANG4 ANG5 ANG6 ANG7 ANG8 ANG9 ANG10 BAL1 BAL2 BAL3 BAL4 BAL5 BAL6 BAL7 BAL8 BAL9 BAL10 CAT1 CAT2 CAT3 CAT4 CAT5 CAT6 CAT7 CAT8 CAT9 CAT10 DUM1 DUM2 DUM3 DUM4 DUM5 DUM6 DUM7 DUM8 DUM9 DUM10 EAT1 EAT2 EAT3 EAT4 EAT5 EAT6 EAT7 EAT8 EAT9 EAT10 FAT1 FAT2 FAT3 FAT4 FAT5 FAT6 FAT7 FAT8 FAT9 FAT10 GAS1 GAS2 GAS3 GAS4 GAS5 GAS6 GAS7 GAS8 GAS9 GAS10 C Step Time ANG1 ANG2 ANG3 ANG4 ANG5 ANG6 ANG7 ANG8 ANG9 ANG10 C 1 .1E-2 1.0 -1. 1.0 1.0 .540302306 .841470985 -.84147098 .841470985 -.84147098 -.84147098 C BAL1 BAL2 BAL3 BAL4 BAL5 BAL6 BAL7 BAL8 BAL9 BAL10 C .072238804 -1.8653096 -1. 1.0 8.53972127 5.85987 .42331 1.15572715 6.40017231 6.39917231 C CAT1 CAT2 CAT3 CAT4 CAT5 CAT6 CAT7 CAT8 CAT9 CAT10 C 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 BLANK card ending node voltage outputs C DUM1 DUM2 DUM3 DUM4 DUM5 DUM6 DUM7 DUM8 DUM9 DUM10 C 1.0 3.87400715 -1.5625528 22.4590591 72.4590591 3.31831016 179.999848 3.14159 -4. -3.14159 C EAT1 EAT2 EAT3 EAT4 EAT5 EAT6 EAT7 EAT8 EAT9 EAT10 C 4.0 -.99999933 2.30103 .785398163 7.3890561 -.52359878 1.04719755 .813467631 .761594156 .761594156 C FAT1 FAT2 FAT3 FAT4 FAT5 FAT6 FAT7 FAT8 FAT9 FAT10 C .57734968 1.15470056 .117099841 -.70710678 -3. 5.0 -3.2763323 1.3114543 -4.85987 -.42331 C GAS1 GAS2 GAS3 GAS4 GAS5 GAS6 GAS7 GAS8 GAS9 GAS10 C 1.15572715 17.2586339 2.48054157 .9990005 .9990005 .9990005 .9990005 .9990005 .9990005 3.999 BLANK card ending plot cards BEGIN NEW DATA CASE C 5th of 6 subcases documents pocket calculator applied to many intermediate C variables. This was the beginning of Orlando Hevia's R7U.DAT which was C added 6 August 2010. Exceptional Lists 4 & 26 are close to their minima. C The electrical network was substantial, but is of no interest here so has C been omitted. The $PARAMETER data seemed plenty creative to WSM. Volume C is unlimited as KNT is unlimited. But who deserves credit for imagining C such use? Perhaps Prof. Hans Kr. Hoidalen, the author of ATPDraw! E-mail C from Mr. Hevia dated Sunday, August 15, 2010 explained: "The lines are C generated by an ATPDraw option, @FILE. It is a sort of pointlist, with C the possibility of one or more columns. Just before ATPDraw runs ATP, it C generates the lines as you see in r7u.dat. I know the @FILE option because C the user sent the question with his problem." In any case, with such use C as this, the pocket calculator suddenly must handle more voluminous data, C particularly intermediate variables. List 4 (sources) storage of the load C flow is being used for the first time as previously-fixed dimensions of C the pocket calculator are made variable. Not all, but an important part. C 8 previously-fixed vectors have been made variable. WSM, 19 August 2010. NEW LIST SIZES { Request for a change to program table sizes (VARDIM input) DEFAULT 3.0 { Any blank field will be converted to 3 times default value 0 0 0 840 { List 4 = 840 of LISTSIZE.BPA is adequate BLANK card for lists 11-20. 0 0 0 0 0 950 { KONST use below requires this 390 300 { Optional card for Lists 31, etc. --- as LISTSIZE.BPA 240000 742 { Offsets for supporting programs (non-simulation overlays) C Controls of following request card: MAXKNT IOPCVP NOSTAT { Loop 50 times POCKET CALCULATOR VARIES PARAMETERS 50 0 C $DEBUG, 9, { For diagnostic output of pocket calculator, activate this request C Following use of tags continues to work, but is being augmented by the C more powerful definition of all such indices at once (see below). C $PARAMETER INDOFF=121 KONST=242 C As long as List 4 is limited to 840 (in LISTSIZE.BPA as of 7 August 2010), it C is necessary to optimize the compilation by the pocket calculator. This can C be seen from the end of diagnostic output, which shows a need for 913 cells: C ---- Assembler after replace any SN= ---- C 117 IP________=IP C COPY IP IP____ 913 C New input:EOF C Without this many cells for List 4, the following line is necessary. It will C reduce the preceding 913 to 789 which is well within the 840 cells available: C $PARAMETER NOOPT=0 { Restore compiler optimization that 2nd subcase ended C $PARAMETER MAXASS=990 NOOPT=0 C $PARAMETER MAXLHS=170 --- For a week or so this was honored, but no longer C Having disabled all of the old definitions, consider the new, better way: C 1 2 3 4 5 6 C 34567890123456789012345678901234567890123456789012345678901234 C INDOFF KONST NOOPT MAXASS MAXLHS $PARAMETER LIMITS : 121 242 0 990 170 $PARAMETER F01001=(KNT.EQ.1.)*229.6111+(KNT.EQ.2.)*233.69775 $$ F01002=(KNT.EQ.3.)*158.12631+(KNT.EQ.4.)*108.91404 $$ F01003=(KNT.EQ.5.)*278.28978+(KNT.EQ.6.)*96.295541 $$ F01004=(KNT.EQ.7.)*239.16153+(KNT.EQ.8.)*187.79161 $$ F01005=(KNT.EQ.9.)*93.658151+(KNT.EQ.10.)*192.55105 $$ F01006=(KNT.EQ.11.)*165.51983+(KNT.EQ.12.)*171.78016 $$ F01007=(KNT.EQ.13.)*269.06742+(KNT.EQ.14.)*256.13115 $$ F01008=(KNT.EQ.15.)*276.15484+(KNT.EQ.16.)*214.35659 $$ F01009=(KNT.EQ.17.)*171.24842+(KNT.EQ.18.)*332.23904 $$ F01010=(KNT.EQ.19.)*341.62624+(KNT.EQ.20.)*72.282156 $$ F01011=(KNT.EQ.21.)*206.20294+(KNT.EQ.22.)*292.75362 $$ F01012=(KNT.EQ.23.)*190.11552+(KNT.EQ.24.)*271.59629 $$ F01013=(KNT.EQ.25.)*278.79531+(KNT.EQ.26.)*312.74695 $$ F01014=(KNT.EQ.27.)*338.04959+(KNT.EQ.28.)*79.377109 $$ F01015=(KNT.EQ.29.)*291.07469+(KNT.EQ.30.)*52.334939 $$ F01016=(KNT.EQ.31.)*113.32174+(KNT.EQ.32.)*198.40889 $$ F01017=(KNT.EQ.33.)*338.27422+(KNT.EQ.34.)*254.87681 $$ F01018=(KNT.EQ.35.)*74.500633+(KNT.EQ.36.)*52.138059 $$ F01019=(KNT.EQ.37.)*44.356605+(KNT.EQ.38.)*301.45684 $$ F01020=(KNT.EQ.39.)*305.09034+(KNT.EQ.40.)*173.39597 $$ F01021=(KNT.EQ.41.)*66.13517+(KNT.EQ.42.)*213.79447 $$ F01022=(KNT.EQ.43.)*83.636753+(KNT.EQ.44.)*242.91365 $$ F01023=(KNT.EQ.45.)*249.7637+(KNT.EQ.46.)*178.4586 $$ F01024=(KNT.EQ.47.)*193.61877+(KNT.EQ.48.)*110.70991 $$ F01025=(KNT.EQ.49.)*221.4351+(KNT.GE.50.)*339.68186 $$ P01001=F01001+F01002+F01003+F01004+F01005+F01006+F01007+F01008+F01009 $$ P01002=P01001+F01010+F01011+F01012+F01013+F01014+F01015+F01016+F01017 $$ P01003=P01002+F01018+F01019+F01020+F01021+F01022+F01023+F01024+F01025 $$ ANGAI=P01003 $$ F02001=+(KNT.EQ.1.)*349.6111+(KNT.EQ.2.)*353.69775 $$ F02002=(KNT.EQ.3.)*278.12631+(KNT.EQ.4.)*228.91404 $$ F02003=(KNT.EQ.5.)*398.28978+(KNT.EQ.6.)*216.29554 $$ F02004=(KNT.EQ.7.)*359.16153+(KNT.EQ.8.)*307.79161 $$ F02005=(KNT.EQ.9.)*213.65815+(KNT.EQ.10.)*312.55105 $$ F02006=(KNT.EQ.11.)*285.51983+(KNT.EQ.12.)*291.78016 $$ F02007=(KNT.EQ.13.)*389.06742+(KNT.EQ.14.)*376.13115 $$ F02008=(KNT.EQ.15.)*396.15484+(KNT.EQ.16.)*334.35659 $$ F02009=(KNT.EQ.17.)*291.24842+(KNT.EQ.18.)*452.23904 $$ F02010=(KNT.EQ.19.)*461.62624+(KNT.EQ.20.)*192.28216 $$ F02011=(KNT.EQ.21.)*326.20294+(KNT.EQ.22.)*412.75362 $$ F02012=(KNT.EQ.23.)*310.11552+(KNT.EQ.24.)*391.59629 $$ F02013=(KNT.EQ.25.)*398.79531+(KNT.EQ.26.)*432.74695 $$ F02014=(KNT.EQ.27.)*458.04959+(KNT.EQ.28.)*199.37711 $$ F02015=(KNT.EQ.29.)*411.07469+(KNT.EQ.30.)*172.33494 $$ F02016=(KNT.EQ.31.)*233.32174+(KNT.EQ.32.)*318.40889 $$ F02017=(KNT.EQ.33.)*458.27422+(KNT.EQ.34.)*374.87681 $$ F02018=(KNT.EQ.35.)*194.50063+(KNT.EQ.36.)*172.13806 $$ F02019=(KNT.EQ.37.)*164.3566+(KNT.EQ.38.)*421.45684 $$ F02020=(KNT.EQ.39.)*425.09034+(KNT.EQ.40.)*293.39597 $$ F02021=(KNT.EQ.41.)*186.13517+(KNT.EQ.42.)*333.79447 $$ F02022=(KNT.EQ.43.)*203.63675+(KNT.EQ.44.)*362.91365 $$ F02023=(KNT.EQ.45.)*369.7637+(KNT.EQ.46.)*298.4586 $$ F02024=(KNT.EQ.47.)*313.61877+(KNT.EQ.48.)*230.70991 $$ F02025=(KNT.EQ.49.)*341.4351+(KNT.GE.50.)*459.68186 $$ P02001=F02001+F02002+F02003+F02004+F02005+F02006+F02007+F02008+F02009 $$ P02002=P02001+F02010+F02011+F02012+F02013+F02014+F02015+F02016+F02017 $$ P02003=P02002+F02018+F02019+F02020+F02021+F02022+F02023+F02024+F02025 $$ ANGBI=P02003 $$ F03001=+(KNT.EQ.1.)*109.6111+(KNT.EQ.2.)*113.69775 $$ F03002=(KNT.EQ.3.)*38.126311+(KNT.EQ.4.)*-11.085959 $$ F03003=(KNT.EQ.5.)*158.28978+(KNT.EQ.6.)*-23.704459 $$ F03004=(KNT.EQ.7.)*119.16153+(KNT.EQ.8.)*67.791614 $$ F03005=(KNT.EQ.9.)*-26.341849+(KNT.EQ.10.)*72.551051 $$ F03006=(KNT.EQ.11.)*45.51983+(KNT.EQ.12.)*51.780155 $$ F03007=(KNT.EQ.13.)*149.06742+(KNT.EQ.14.)*136.13115 $$ F03008=(KNT.EQ.15.)*156.15484+(KNT.EQ.16.)*94.356592 $$ F03009=(KNT.EQ.17.)*51.248423+(KNT.EQ.18.)*212.23904 $$ F03010=(KNT.EQ.19.)*221.62624+(KNT.EQ.20.)*-47.717844 $$ F03011=(KNT.EQ.21.)*86.202936+(KNT.EQ.22.)*172.75362 $$ F03012=(KNT.EQ.23.)*70.115523+(KNT.EQ.24.)*151.59629 $$ F03013=(KNT.EQ.25.)*158.79531+(KNT.EQ.26.)*192.74695 $$ F03014=(KNT.EQ.27.)*218.04959+(KNT.EQ.28.)*-40.622891 $$ F03015=(KNT.EQ.29.)*171.07469+(KNT.EQ.30.)*-67.665061 $$ F03016=(KNT.EQ.31.)*-6.6782645+(KNT.EQ.32.)*78.408894 $$ F03017=(KNT.EQ.33.)*218.27422+(KNT.EQ.34.)*134.87681 $$ F03018=(KNT.EQ.35.)*-45.499367+(KNT.EQ.36.)*-67.861941 $$ F03019=(KNT.EQ.37.)*-75.643395+(KNT.EQ.38.)*181.45684 $$ F03020=(KNT.EQ.39.)*185.09034+(KNT.EQ.40.)*53.395974 $$ F03021=(KNT.EQ.41.)*-53.86483+(KNT.EQ.42.)*93.794469 $$ F03022=(KNT.EQ.43.)*-36.363247+(KNT.EQ.44.)*122.91365 $$ F03023=(KNT.EQ.45.)*129.7637+(KNT.EQ.46.)*58.458596 $$ F03024=(KNT.EQ.47.)*73.618773+(KNT.EQ.48.)*-9.2900913 $$ F03025=(KNT.EQ.49.)*101.4351+(KNT.GE.50.)*219.68186 $$ P03001=F03001+F03002+F03003+F03004+F03005+F03006+F03007+F03008+F03009 $$ P03002=P03001+F03010+F03011+F03012+F03013+F03014+F03015+F03016+F03017 $$ P03003=P03002+F03018+F03019+F03020+F03021+F03022+F03023+F03024+F03025 $$ ANGCI=P03003 $$ F04001=+(KNT.EQ.1.)*65300.+(KNT.EQ.2.)*30667.412 $$ F04002=(KNT.EQ.3.)*31979.935+(KNT.EQ.4.)*81276.349 $$ F04003=(KNT.EQ.5.)*18906.501+(KNT.EQ.6.)*21719.44 $$ F04004=(KNT.EQ.7.)*7124.8541+(KNT.EQ.8.)*4846.9281 $$ F04005=(KNT.EQ.9.)*12418.612+(KNT.EQ.10.)*32587.942 $$ F04006=(KNT.EQ.11.)*14560.237+(KNT.EQ.12.)*6698.0694 $$ F04007=(KNT.EQ.13.)*70803.752+(KNT.EQ.14.)*12315.218 $$ F04008=(KNT.EQ.15.)*24474.203+(KNT.EQ.16.)*24726.58 $$ F04009=(KNT.EQ.17.)*19379.812+(KNT.EQ.18.)*36500.402 $$ F04010=(KNT.EQ.19.)*19104.929+(KNT.EQ.20.)*4845.0075 $$ F04011=(KNT.EQ.21.)*9027.5757+(KNT.EQ.22.)*31403.277 $$ F04012=(KNT.EQ.23.)*7222.6444+(KNT.EQ.24.)*17609.525 $$ F04013=(KNT.EQ.25.)*9836.8418+(KNT.EQ.26.)*7827.2433 $$ F04014=(KNT.EQ.27.)*9097.1448+(KNT.EQ.28.)*16693.945 $$ F04015=(KNT.EQ.29.)*29337.654+(KNT.EQ.30.)*22084.662 $$ F04016=(KNT.EQ.31.)*70211.788+(KNT.EQ.32.)*19456.883 $$ F04017=(KNT.EQ.33.)*5592.8618+(KNT.EQ.34.)*24983.583 $$ F04018=(KNT.EQ.35.)*26539.252+(KNT.EQ.36.)*33746.765 $$ F04019=(KNT.EQ.37.)*40387.027+(KNT.EQ.38.)*86591.522 $$ F04020=(KNT.EQ.39.)*14466.269+(KNT.EQ.40.)*31953.179 $$ F04021=(KNT.EQ.41.)*24428.887+(KNT.EQ.42.)*14013.494 $$ F04022=(KNT.EQ.43.)*200790.43+(KNT.EQ.44.)*19225.061 $$ F04023=(KNT.EQ.45.)*6217.3361+(KNT.EQ.46.)*140243.24 $$ F04024=(KNT.EQ.47.)*34046.067+(KNT.EQ.48.)*8264.9251 $$ F04025=(KNT.EQ.49.)*45450.444+(KNT.GE.50.)*85889.85 $$ P04001=F04001+F04002+F04003+F04004+F04005+F04006+F04007+F04008+F04009 $$ P04002=P04001+F04010+F04011+F04012+F04013+F04014+F04015+F04016+F04017 $$ P04003=P04002+F04018+F04019+F04020+F04021+F04022+F04023+F04024+F04025 $$ IP=P04003 $$ IP________=IP IQ______=IP ANGC______=ANGCI ANGB______=ANGBI ANGA______=ANGAI C Intermediate variable before parameter itself. |IP=P04003 $$ C Parameter 1 defined. Value = 6.530000E+04 |IP________=IP C Parameter 2 defined. Value = 6.530000E+04 |IQ______=IP C Parameter 3 defined. Value = 1.096111E+02 |ANGC______=ANGCI C Parameter 4 defined. Value = 3.496111E+02 |ANGB______=ANGBI C Parameter 5 defined. Value = 2.296111E+02 |ANGA______=ANGAI BLANK card ends input to $PARAMETER 5.E-9 6.E-6 500 1 1 1 1 0 0 1 0 C The rest of R7U.DAT is of no particular interest, so terminate execution: $ABORT BEGIN NEW DATA CASE C 6th of 6 subcases illustrates a much more efficient representation of C the preceding 5th subcase using the new SELECT function of the pocket C calculator. The answer is unchanged. Variable names have been lengthened C to avoid warnings, however. For the 3 angles, "ANG" has become "ANGL" C in order that names reach the minimum of 6 bytes. Finally (the 4th of 4), C "IP" has become "IPNAME". Warnings were avoided in the 5th subcase only C because the names were internal to the pocket calculator (marked by a "$$" C on the right edge). Using SELECT, there is no need for any such special C treatment (note that all "$$" have been removed). WSM. 14 September 2010 C Controls of following request card: MAXKNT IOPCVP NOSTAT { Loop 50 times POCKET CALCULATOR VARIES PARAMETERS 50 0 C 34567890123456789012345678901234567890123456789012345678901234 C INDOFF KONST NOOPT MAXASS MAXLHS C $PARAMETER LIMITS : 121 242 0 990 170 C Note that the preceding expansion of calculator tables has been removed. C Thanks to SELECT, storage is minimal. The numbers themselves do not C count as they are stored in available numerical storage. Rather than C 990 lines of assembly language (to which limit MAXASS applies), this C data never exceeds 2. The SELECT function itself requires a single C line and storage of the value that was selected requires a second. To C prove that default dimensions work, we reset them: C 34567890123456789012345678901234567890123456789012345678901234 C INDOFF KONST NOOPT MAXASS MAXLHS $PARAMETER LIMITS : 60 120 0 270 170 C First, let's show how simple the use of SELECT makes the preceding 5th C data subcase. The same values for ANGLAI, ANGLBI, ANGLCI, and IPNAME C are produced with great economy of both data and computation as follows: $PARAMETER ANGLAI = SELECT ( KNT ) 229.6111 233.69775 158.12631 108.91404 278.28978 96.295541 239.16153 187.79161 93.658151 192.55105 165.51983 171.78016 269.06742 256.13115 276.15484 214.35659 171.24842 332.23904 341.62624 72.282156 206.20294 292.75362 190.11552 271.59629 278.79531 312.74695 338.04959 79.377109 291.07469 52.334939 113.32174 198.40889 338.27422 254.87681 74.500633 52.138059 44.356605 301.45684 305.09034 173.39597 66.13517 213.79447 83.636753 242.91365 249.7637 178.4586 193.61877 110.70991 221.4351 339.68186 ANGLBI = SELECT ( KNT ) 349.6111 353.69775 278.12631 228.91404 398.28978 216.29554 359.16153 307.79161 213.65815 312.55105 285.51983 291.78016 389.06742 376.13115 396.15484 334.35659 291.24842 452.23904 461.62624 192.28216 326.20294 412.75362 310.11552 391.59629 398.79531 432.74695 458.04959 199.37711 411.07469 172.33494 233.32174 318.40889 458.27422 374.87681 194.50063 172.13806 164.3566 421.45684 425.09034 293.39597 186.13517 333.79447 203.63675 362.91365 369.7637 298.4586 313.61877 230.70991 341.4351 459.68186 ANGLCI = SELECT ( KNT ) 109.6111 113.69775 38.126311-11.085959 158.28978-23.704459 119.16153 67.791614 -26.341849 72.551051 45.51983 51.780155 149.06742 136.13115 156.15484 94.356592 51.248423 212.23904 221.62624-47.717844 86.202936 172.75362 70.115523 151.59629 158.79531 192.74695 218.04959-40.622891 171.07469-67.665061-6.6782645 78.408894 218.27422 134.87681-45.499367-67.861941-75.643395 181.45684 185.09034 53.395974 -53.86483 93.794469-36.363247 122.91365 129.7637 58.458596 73.618773-9.2900913 101.4351 219.68186 IPNAME = SELECT ( KNT ) 65300. 30667.412 31979.935 81276.349 18906.501 21719.44 7124.8541 4846.9281 12418.612 32587.942 14560.237 6698.0694 70803.752 12315.218 24474.203 24726.58 19379.812 36500.402 19104.929 4845.0075 9027.5757 31403.277 7222.6444 17609.525 9836.8418 7827.2433 9097.1448 16693.945 29337.654 22084.662 70211.788 19456.883 5592.8618 24983.583 26539.252 33746.765 40387.027 86591.522 14466.269 31953.179 24428.887 14013.494 200790.43 19225.061 6217.3361 140243.24 34046.067 8264.9251 45450.444 85889.85 C Parameter 1 defined. Value = 2.296111E+02 |ANGLAI = SELECT ( KNT ) C Parameter 2 defined. Value = 3.496111E+02 |ANGLBI = SELECT ( KNT ) C Parameter 3 defined. Value = 1.096111E+02 |ANGLCI = SELECT ( KNT ) C Parameter 4 defined. Value = 6.530000E+04 |IPNAME = SELECT ( KNT ) BLANK card ends input to $PARAMETER C That takes care of the 5th data subcase. Before leaving this 6th subcase, C however, we will illustrate several variations. First, the argument of C the SELECT function, which is not necessarily KNT. Yes, the PCVP loop C counter KNT is the natural one, but not the only one. The argument of C SELECT can involve pocket calculator math as shown by this modification C which uses subscript VALUE4 = LL3 + 1 = 3 + 1 = 4. The 4th number of the C following set is -11.085959 so this is the value that will be loaded into C the left hand side ANGLCI. Final detail: LL3 is an ATP symbol which has C integer value 3. Similarly LL4 (used later) has value 4. $PARAMETER VALUE4 = LL3 + 1.0 $$ { VALUE4 is an intermediate variable so a double dollar PARAM5 = SELECT ( VALUE4 ) { This param #5 should have value -11.085959 109.6111 113.69775 38.126311-11.085959 { Truncate points at last one used (4) C Also illustrate that comment lines are tolerated within data of SELECT. The C following PARAM6 for parameter #6 should give a result that is identical C to ANGLAI when KNT = 1 (all that is being used): PARAM6 = SELECT ( KNT ) 229.6111 233.69775 158.12631 108.91404 278.28978 96.295541 239.16153 187.79161 C 93.658151 192.55105 165.51983 171.78016 269.06742 256.13115 276.15484 214.35659 C 171.24842 332.23904 341.62624 72.282156 206.20294 292.75362 190.11552 271.59629 C 278.79531 312.74695 338.04959 79.377109 291.07469 52.334939 113.32174 198.40889 C 338.27422 254.87681 74.500633 52.138059 44.356605 301.45684 305.09034 173.39597 C 66.13517 213.79447 83.636753 242.91365 249.7637 178.4586 193.61877 110.70991 221.4351 339.68186 { An in-line comment is legal on partial final card C Also illustrate that non-integer subscripts will result in a warning, but C not a fatal error. Integer truncation will be used as in Fortran. Thus C the value of PARAM7 should be identical to that of PARAM5. Once again C only 4 data points are required, but the full first card of 10 will be C used to illustrate the following blank card for termination. VALUE5 = LL4 + 0.5 $$ PARAM7 = SELECT ( VALUE5 ) { This param #7 should have value -11.085959 109.6111 113.69775 38.126311-11.085959 158.28978-23.704459 119.16153 67.791614 BLANK card is needed to terminate SELECT since preceding card was full C Finally illustrate that an excessive subscript will result in a warning, but C not a fatal error. Just as for Prof. Hoidalen's data of the 5th subcase, C the last data point will be used if a subscript is excessive. In this C case, the subscript has value 5 whereas only 4 data points are defined. PARAM8 = SELECT ( LL5 ) { This param #8 should have value -11.085959 109.6111 113.69775 38.126311-11.085959 C Intermediate variable before parameter itself. |VALUE4 = LL3 + 1.0 $$ { VALUE4 is an intermediate variable so a double dollar C Parameter 5 defined. Value = -1.108596E+01 |PARAM5 = SELECT ( VALUE4 ) { This param #5 should have value -11.085959 C Parameter 6 defined. Value = 2.296111E+02 |PARAM6 = SELECT ( KNT ) C Intermediate variable before parameter itself. |VALUE5 = LL4 + 0.5 $$ C ### Warning. The argument of SELECT is not an integer. POCKE4 truncates to integer from 4.5000000E+00 C Parameter 7 defined. Value = -1.108596E+01 |PARAM7 = SELECT ( VALUE5 ) { This param #7 should have value -11.085959 C ### Warning. SELECT argument 5 is too large for data. POCKE4 uses last entry, number 4 C Parameter 8 defined. Value = -1.108596E+01 |PARAM8 = SELECT ( LL5 ) { This param #8 should have value -11.085959 BLANK card ends input to $PARAMETER 5.E-9 6.E-6 500 1 1 1 C The rest of R7U.DAT is of no particular interest, so terminate execution: $ABORT BEGIN NEW DATA CASE BLANK