I've made this one program as shown below. This is originally from GW basic, i modified abit for the reason where i can match any gases i want as shown in line 508
1 CLEAR 2 CLS 10 REM INERT GAS RECHARGE TEMPERATURE CALCULATION PROGRAM 15 REM QBASIC 40 V = 1 60 DIM G(6, 600), T(6, 600), W(600), SD(600), E(6, 600), P(600), S(6, 600), CI(600) 70 PRINT "Is an altitude correction needed? Y or N" 80 INPUT A$ 90 IF A$ = "y" OR A$ = "Y" THEN GOTO 110 100 CORR = 1: GOTO 170 110 PRINT "Input altitude of recharge (m)" 120 INPUT Alt 130 PRINT "Input Mean Annual Sea-level Air Temperature, MASAT (deg.C)" 140 INPUT Masat 150 Masat = Masat + 273.15 160 CORR = 1 * EXP(-.032 * Alt / Masat) 165 GOTO 175 170 Alt = 0: Masat = 0 175 PRINT "TYPE OF ATER - FRESH OR SALINE? ENTER F or S" 180 INPUT S$ 190 IF S$ = "f" OR S$ = "F" THEN GOTO 240 200 PRINT "Input SALINITY (parts per thousand)" 210 INPUT Sal 220 LET MOL = Sal / 64.113 230 V = 0 240 GOSUB 1000
250 PRINT "Sample name?" 260 INPUT N$ 270 PRINT "Sample reference number?" 280 INPUT R$ 290 PRINT "Set upper charge temperature limit, deg.C" 300 INPUT Lim
330 PRINT "Enter He*1E8": G(1, 1) = 0 340 INPUT G(1, 1) 345 HEI = G(1, 1) 350 G(1, 1) = G(1, 1) * 1E-08 360 PRINT "Enter Ne*1E7": G(2, 1) = 0 370 INPUT G(2, 1) 275 NEI = G(2, 1) 380 G(2, 1) = G(2, 1) * .0000001 390 PRINT "Enter Ar*1E4": G(3, 1) = 0 400 INPUT G(3, 1) 405 ARI = G(3, 1) 410 G(3, 1) = G(3, 1) * .0001 420 PRINT "Ar correction by Ar40/Ar36 or by radiogenic He? AR or HE" 421 INPUT Q$ 422 IF Q$ = "AR" OR Q$ = "ar" THEN GOTO 425 423 G(3, 1) = G(3, 1) - (.14 * RAD) 424 GOTO 450 425 PRINT "Enter Ar40/Ar36 ratio, Y or N (default N is 295.5)": Rat = 295.5 426 INPUT U$ 427 IF U$ = "N" OR U$ = "n" THEN GOTO 429 428 INPUT Rat 429 G(3, 1) = G(3, 1) * 296.5 / (1 + Rat): ARCORR = G(3, 1) * 10000! 450 PRINT "Enter Kr*1E8": G(4, 1) = 0 460 INPUT G(4, 1) 465 KRI = G(4, 1) 470 G(4, 1) = G(4, 1) * 1E-08 480 PRINT "Enter Xe*1E8": G(5, 1) = 0 490 INPUT G(5, 1) 495 XEI = G(5, 1) 500 G(5, 1) = G(5, 1) * 1E-08 501 PRINT "Enter N2*1E2, ie ccSTP/ccH2O": G(6, 1) = 0 502 INPUT G(6, 1) 503 N2I = G(6, 1) 504 PRINT "Corrections to N2 (equivalent N2*1E2) - n.b. 0.0893meq NO3 equivalent to 1ml N2": N2EQ = 0 505 INPUT N2EQ 506 G(6, 1) = G(6, 1) - N2EQ 507 G(6, 1) = G(6, 1) * .01: N2CORR = G(6, 1) * 100!
508 CLS: REM CHOOSING GASES 510 PRINT "Number of gases to be matched. 2,3,4 or 5" 511 INPUT QUANT% 512 IF QUANT% = 2 THEN GOTO 518 513 IF QUANT% = 3 THEN GOTO 536 514 IF QUANT% = 4 THEN GOTO 564 515 IF QUANT% = 5 THEN GOTO 610 516 IF QUANT% = 1 THEN GOTO 510 517 IF QUANT% <> 5 THEN GOTO 510
518 PRINT "Ne = 2, Ar = 3, Kr = 4, Xe = 5, N2 = 6, 2-6"
519 PRINT "Gas 1" 520 INPUT GASA%
522 IF GASA% < 1 or GASA% > 6 THEN GOTO 519
527 PRINT "Gas 2" 528 INPUT GASB% 529 IF GASB% = GASA% THEN GOTO 527
532 IF GASB% < 1 or GASB% > 6 THEN GOTO 527 535 GOTO 610
536 PRINT "Ne = 2, Ar = 3, Kr = 4, Xe = 5, N2 = 6, 2-6"
537 PRINT "Gas 1" 538 INPUT GASA%
542 IF GASA% < 1 or GASA% > 6 THEN GOTO 537
545 PRINT "Gas 2" 546 INPUT GASB% 547 IF GASB% = GASA% THEN GOTO 545
552 IF GASB% < 1 or GASB% > 6 THEN GOTO 545
554 PRINT "Gas 3" 555 INPUT GASC% 556 IF GASC% = GASA% THEN GOTO 554 557 IF GASC% = GASB% THEN GOTO 554
562 IF GASC% < 1 or GASC% > 6 THEN GOTO 554 563 GOTO 610
564 PRINT "Ne = 2, Ar = 3, Kr = 4, Xe = 5, N2 = 6, 2-6"
565 PRINT "Gas 1" 566 INPUT GASA%
572 IF GASA% < 1 or GASA% > 6 THEN GOTO 565
573 PRINT "Gas 2" 574 INPUT GASB% 575 IF GASB% = GASA% THEN GOTO 573
581 IF GASB% < 1 or GASB% > 6 THEN GOTO 573
582 PRINT "Gas 3" 583 INPUT GASC% 584 IF GASC% = GASA% THEN GOTO 582 585 IF GASC% = GASB% THEN GOTO 582
591 IF GASC% < 1 or GASC% > 6 THEN GOTO 582
592 PRINT "Gas 4" 593 INPUT GASD% 594 IF GASD% = GASA% THEN GOTO 592 595 IF GASD% = GASB% THEN GOTO 592 596 IF GASD% = GASC% THEN GOTO 592
602 IF GASD% < 1 or GASD% > 6 THEN GOTO 592 603 GOTO 610
610 Ne = G(2, 1): Ar = G(3, 1): KR = G(4, 1): XE = G(5, 1): N2 = G(6, 1): HE = G(1, 1) 611 IF G(2, 1) <> 0 THEN GOTO 621 612 IF G(3, 1) < .0004997 GOTO 629: REM based on Ar:REM large bubble based on Ar 613 CC = G(3, 1) - .0004997 614 G(3, 1) = G(3, 1) - CC 615 G(1, 1) = G(1, 1) - .000560920779# * CC 616 G(2, 1) = G(2, 1) - .001946466809# * CC 617 G(4, 1) = G(4, 1) - .0001219486081# * CC 618 G(5, 1) = G(5, 1) - .000009207708779# * CC 619 G(6, 1) = G(6, 1) - 83.54389722000001# * CC 620 GOTO 629 621 IF G(2, 1) < 2.295E-07 THEN GOTO 629: REM large bubble based on Ne 622 CC = G(2, 1) - 2.295E-07 623 G(2, 1) = G(2, 1) - CC 624 G(1, 1) = G(1, 1) - .2881738174# * CC 625 G(3, 1) = G(3, 1) - 513.7514 * CC 626 G(4, 1) = G(4, 1) - .062651265# * CC 627 G(5, 1) = G(5, 1) - .0047830473# * CC 628 G(6, 1) = G(6, 1) - 4290.79208# * CC
629 J = 2 630 G(3, J) = G(3, J - 1): G(4, J) = G(4, J - 1) 631 G(1, J) = G(1, J - 1): G(2, J) = G(2, J - 1) 632 G(3, J) = G(3, J - 1): G(4, 1) = G(4, J - 1) 633 G(5, J) = G(5, J - 1): G(6, J) = G(6, J - 1) 640 GOSUB 700 641 GOSUB 800 642 FOR J = 3 TO 600 643 G(1, J) = G(1, J - 1) - 1.8010864D-10: REM small air bubble in air ratios 644 G(2, J) = G(2, J - 1) - 6.25E-10 645 G(3, J) = G(3, J - 1) - 3.211E-07 646 G(4, J) = G(4, J - 1) - 3.9157044D-11 647 G(5, J) = G(5, J - 1) - 2.956544E-12 648 G(6, J) = G(6, J - 1) - .000026825495# 649 CI(J) = (NEI * .0000001) / G(2, J) 652 GOSUB 700 653 GOSUB 800 654 IF J > MI + 10 THEN GOTO 3000 655 NEXT J
700 REM SUBROUTINE TO COMPARE G(K,J) WITH S(K,J) TO FIND CORRESPONDING T(K,J) 710 FOR K = 2 TO 6 720 FOR I = 1 TO 600 730 T(K, J) = P(I) - 273.18 740 IF G(K, J) < S(K, I) THEN GOTO 760 750 IF G(K, J) > S(K, I) THEN GOTO 770 760 NEXT I 770 NEXT K 780 RETURN
800 REM SUBROUTINE TO CALCULATE MEAN RECAHRGE TEMPERATURE AND STANDARD DEVIATION (SD) 801 IF QUANT% = 2 THEN SD(J) = T(GASA%, J) + T(GASB%, J): SD(J) = SD(J) / 2: GOTO 810 802 IF QUANT% = 3 THEN SD(J) = T(GASA%, J) + T(GASB%, J) + T(GASC%, J): SD(J) = SD(J) / 3: GOTO 810 803 IF QUANT% = 4 THEN SD(J) = T(GASA%, J) + T(GASB%, J) + T(GASC%, J) + T(GASD%, J): SD(J) = SD(J) / 4: GOTO 810 804 IF QUANT% = 5 THEN SD(J) = T(2, J) + T(3, J) + T(4, J) + T(5, J) + T(6, J): SD(J) = SD(J) / 5: GOTO 810
810 FOR I = 1 TO 6 811 D(I) = (T(I, J) - SD(J)) * (T(I, J) - SD(J)) 812 NEXT I
820 IF QUANT% = 2 THEN DI = D(GASA%) + D(GASB%): W(J) = SQR(DI): GOTO 860 821 IF QUANT% = 3 THEN DI = D(GASA%) + D(GASB%) + D(GASC%): W(J) = SQR(DI / 2): GOTO 860 822 IF QUANT% = 4 THEN DI = D(GASA%) + D(GASB%) + D(GASC%) + D(GASD%): W(J) = SQR(DI / 3): GOTO 860 823 IF QUANT% = 5 THEN DI = D(2) + D(3) + D(4) + D(5) + D(6): W(J) = SQR(DI / 4): GOTO 860
860 IF J = 2 THEN GOTO 880 870 IF W(J) > LSD THEN GOTO 900 880 LSD = W(J) 890 MI = J 900 RETURN
1000 REM CACLCULATE Ne, Ar, Kr, Xe Solubilities in 0.1 deg. intervals from -10 to 50 deg.C 1010 X = 263.08: Y = 36.855: Z = 1244.142 1020 FOR K = 2 TO 6 1030 READ H(K), L(K), N(K), A(K), B(K), C(K), D(K) 1040 NEXT K 1050 DATA 142.50,41.667,1.818E-5,-0.3022,3.6278,-13.6641,16.8309 1060 DATA 168.87,40.404,9.34E-3,-0.4050,3.8471,-12.3389,13.6921 1070 DATA 179.21,39.781,1.139E-6,-0.1124,1.3282,-5.1423,6.8403 1080 DATA 188.78,39.273,8.60E-8,-0.1611,1.9007,-7.3019,9.5072 1081 DATA 162.02,41.712,0.7803,-0.2427,2.1504,-6.6100,7.4294 1090 FOR K = 2 TO 6 1100 Q = X 1110 FOR I = 1 TO 600 1120 Q = Q + .1 1130 P(I) = Q 1140 TE = H(K) / P(I) - 1 1150 S(K, I) = L(K) * TE + Y * TE * TE 1160 S(K, I) = EXP(S(K, I)) 1170 S(K, I) = S(K, I) * N(K) * Z 1180 IF V = 0 THEN GOSUB 2000 1185 S(K, I) = S(K, I) * PP 1190 S(K, I) = S(K, I) * CORR 1200 NEXT I: NEXT K 1210 RETURN
2000 REM SUBROUTINE TO MODIFY SOLUBILITIES FOR SALINE RECHARGE WATER 2010 VIN = P(I) / 100 2020 XY = A(K) * VIN * VIN * VIN + B(K) * VIN * VIN + C(K) * VIN + D(K) 2030 S(K, I) = S(K, I) / EXP(MOL / XY) 2040 RETURN
3000 REM SUBROUTINE TO PRINT TITLES AND INITIAL GAS CONTENTS 3010 CLS 3030 PRINT "RECHARGE TEMPERATURE CALCULATION" 3050 PRINT "SAMPLE NAME:"; N$ 3060 PRINT "SAMPLE REF. NO.:"; R$ 3070 PRINT "Ar-40/Ar-36 RATIO ="; Rat 3080 PRINT "UPPER RECHARGE LIMIT ="; Lim 3090 IF V = 1 THEN GOTO 3110 3100 PRINT "SALINITY (ppt)="; Sal 3110 PRINT "ALTITUDE OF RECHARGE ZONE (m)="; Alt 3112 PRINT "MEAN ANNUAL SEA-LEVEL TEMP. OVER RECHARGE ZONE ="; Masat 3113 J = MI 3114 IF J <= 1 THEN GOTO 6000 3160 GOSUB 4000 3161 PRINT "He(i,E-8)="; HEI; "He(f,E-8)="; E(1, J); "Ne(i,E-7)="; NEI; "Ne(f,E-7)="; E(2, J) 3162 PRINT "Ar(i,E-4)="; ARI; "Ar(f,E-4)="; E(3, J) 3163 PRINT "Kr(i,E-8)="; KRI; "Kr(f,E-8)="; E(4, J); "Xe(i,E-8)="; XEI; "Xe(f,E-8)="; E(5, J) 3164 PRINT "N2(i,E-2)="; N2I; "N2(f,E-2)="; E(6, J) 3165 PRINT "T(He)="; T(1, J); "T(Ne)="; T(2, J); "T(Ar)="; T(3, J) 3166 PRINT "T(Kr)="; T(4, J); "T(Xe)="; T(5, J); "T(N2)="; T(6, J) 3167 PRINT "J="; J; "T AVG="; SD(J); "T SD="; W(J); "CI(Ne)="; CI(J)
3170 PRINT "ANOTHER CALCULATION ON SAME DATA (Y OR N)": INPUT C$ 3171 IF C$ = "N" OR C$ = "n" THEN GOTO 3200 3172 REM G(1, 1) = HEI * E - 8: G(2, 1) = NEI * E - 7: G(3, 1) = ARI * E - 4: G(4, 1) = KRI * E - 8: G(5, 1) = XEI * E - 8: G(6, 1) = N2I * E - 2 3173 GOTO 508
3200 PRINT 3210 PRINT "NEW SAMPLE (Y OR N)": INPUT D$ 3220 IF D$ = "Y" OR D$ = "y" THEN GOTO 1 3230 END
4000 REM SUBROUTINE TO MULTIPLY UP GAS CONTENTS FOR PRINTING 4010 E(1, J) = G(1, J) * 1E+08 4020 E(2, J) = G(2, J) * 1E+07 4030 E(3, J) = G(3, J) * 10000! 4040 E(4, J) = G(4, J) * 1E+08 4050 E(5, J) = G(5, J) * 1E+08 4051 E(6, J) = G(6, J) * 100! 4060 RETURN
6000 REM SUBROUTINE TO PRINT OUT FULL DATASET 6070 LET J = 2 6080 GOSUB 4000 6081 PRINT "He(i,E-8)="; HEI; "He(f,E-8)="; E(1, J); "Ne(i,E-7)="; NEI; "Ne(f,E-7)="; E(2, J) 6082 PRINT "Ar(i,E-4)="; ARI; "Ar(f,E-4)="; E(3, J) 6083 PRINT "Kr(i,E-8)="; KRI; "Kr(f,E-8)="; E(4, J); "Xe(i,E-8)="; XEI; "Xe(f,E-8)="; E(5, J) 6084 PRINT "N2(i,E-2)="; N2I; "N2(f,E-2)="; E(6, J) 6085 PRINT "T(He)="; T(1, J); "T(Ne)="; T(2, J); "T(Ar)="; T(3, J) 6086 PRINT "T(Kr)="; T(4, J); "T(Xe)="; T(5, J); "T(N2)="; T(6, J) 6087 PRINT "J="; J; "T AVG="; SD(J); "T SD="; W(J); "CI(Ne)="; CI(J)
6090 PRINT "ANOTHER CALCULATION ON SAME DATA (Y OR N)": INPUT C$ 6091 IF C$ = "N" OR C$ = "n" THEN GOTO 7000 6092 REM G(1, 1) = HEI * E - 8: G(2, 1) = NEI * E - 7: G(3, 1) = ARI * E - 4: G(4, 1) = KRI * E - 8: G(5, 1) = XEI * E - 8: G(6, 1) = N2I * E - 2 6093 GOTO 508
7000 PRINT 7001 PRINT "NEW SAMPLE (Y OR N)": INPUT D$ 7002 IF D$ = "Y" OR D$ = "y" THEN GOTO 1 7003 END
7050 J = MI 7060 T = T(3, J) + 273.15 7070 L = 41.667 * (142.5 / T - 1) + 36.855 * (142.5 / T - 1) * (142.5 / T - 1) 7080 K = EXP(L) 7090 S = 124.4142 * 1.818 * .00001 * K * 10 8000 S = S * CORR 8010 IF V = 0 GOTO 8097 8020 Z = T / 100 8030 KS = -.3022 * Z * Z * Z + 3.6278 * Z * Z - 13.6641 * Z + 16.8309 8095 S = S / EXP(MOL * KS) 8097 CI = NEI / (S * 1E+07) 8100 PRINT "J="; J, "Ne="; S, "CI(Ar)="; CI; 8120 RETURN
But my problem is, i ran this program, it does not calculate well as it supposed to run in GW basic. Then i've checked it may be this part (below)
1000 REM CACLCULATE Ne, Ar, Kr, Xe Solubilities in 0.1 deg. intervals from -10 to 50 deg.C 1010 X = 263.08: Y = 36.855: Z = 1244.142 1020 FOR K = 2 TO 6 1030 READ H(K), L(K), N(K), A(K), B(K), C(K), D(K) 1040 NEXT K 1050 DATA 142.50,41.667,1.818E-5,-0.3022,3.6278,-13.6641,16.8309 1060 DATA 168.87,40.404,9.34E-3,-0.4050,3.8471,-12.3389,13.6921 1070 DATA 179.21,39.781,1.139E-6,-0.1124,1.3282,-5.1423,6.8403 1080 DATA 188.78,39.273,8.60E-8,-0.1611,1.9007,-7.3019,9.5072 1081 DATA 162.02,41.712,0.7803,-0.2427,2.1504,-6.6100,7.4294 1090 FOR K = 2 TO 6 1100 Q = X 1110 FOR I = 1 TO 600 1120 Q = Q + .1 1130 P(I) = Q 1140 TE = H(K) / P(I) - 1 1150 S(K, I) = L(K) * TE + Y * TE * TE 1160 S(K, I) = EXP(S(K, I)) 1170 S(K, I) = S(K, I) * N(K) * Z 1180 IF V = 0 THEN GOSUB 2000 1185 S(K, I) = S(K, I) * PP 1190 S(K, I) = S(K, I) * CORR 1200 NEXT I: NEXT K 1210 RETURN
2000 REM SUBROUTINE TO MODIFY SOLUBILITIES FOR SALINE RECHARGE WATER 2010 VIN = P(I) / 100 2020 XY = A(K) * VIN * VIN * VIN + B(K) * VIN * VIN + C(K) * VIN + D(K) 2030 S(K, I) = S(K, I) / EXP(MOL / XY) 2040 RETURN
and maybe this part (below)
610 Ne = G(2, 1): Ar = G(3, 1): KR = G(4, 1): XE = G(5, 1): N2 = G(6, 1): HE = G(1, 1) 611 IF G(2, 1) <> 0 THEN GOTO 621 612 IF G(3, 1) < .0004997 GOTO 629: REM based on Ar:REM large bubble based on Ar 613 CC = G(3, 1) - .0004997 614 G(3, 1) = G(3, 1) - CC 615 G(1, 1) = G(1, 1) - .000560920779# * CC 616 G(2, 1) = G(2, 1) - .001946466809# * CC 617 G(4, 1) = G(4, 1) - .0001219486081# * CC 618 G(5, 1) = G(5, 1) - .000009207708779# * CC 619 G(6, 1) = G(6, 1) - 83.54389722000001# * CC 620 GOTO 629 621 IF G(2, 1) < 2.295E-07 THEN GOTO 629: REM large bubble based on Ne 622 CC = G(2, 1) - 2.295E-07 623 G(2, 1) = G(2, 1) - CC 624 G(1, 1) = G(1, 1) - .2881738174# * CC 625 G(3, 1) = G(3, 1) - 513.7514 * CC 626 G(4, 1) = G(4, 1) - .062651265# * CC 627 G(5, 1) = G(5, 1) - .0047830473# * CC 628 G(6, 1) = G(6, 1) - 4290.79208# * CC
629 J = 2 630 G(3, J) = G(3, J - 1): G(4, J) = G(4, J - 1) 631 G(1, J) = G(1, J - 1): G(2, J) = G(2, J - 1) 632 G(3, J) = G(3, J - 1): G(4, 1) = G(4, J - 1) 633 G(5, J) = G(5, J - 1): G(6, J) = G(6, J - 1) 640 GOSUB 700 641 GOSUB 800 642 FOR J = 3 TO 600 643 G(1, J) = G(1, J - 1) - 1.8010864D-10: REM small air bubble in air ratios 644 G(2, J) = G(2, J - 1) - 6.25E-10 645 G(3, J) = G(3, J - 1) - 3.211E-07 646 G(4, J) = G(4, J - 1) - 3.9157044D-11 647 G(5, J) = G(5, J - 1) - 2.956544E-12 648 G(6, J) = G(6, J - 1) - .000026825495# 649 CI(J) = (NEI * .0000001) / G(2, J) 652 GOSUB 700 653 GOSUB 800 654 IF J > MI + 10 THEN GOTO 3000 655 NEXT J
doesn't calculate as it is supposed to. but this part i totally just copied from the originally GW basic program. can anybody tell me what is wrong with it? Thank tou very much |