mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-01 17:26:38 +00:00
200 lines
5.9 KiB
QBasic
200 lines
5.9 KiB
QBasic
|
||
100 REM POLUT -- WATER POLLUTION SIMULATION FROM ECCP
|
||
105 REM COPYRIGHT 1971 - POLYTECHNIC INSTITUTE OF BROOKLYN
|
||
110 REM MAJOR VARIABLES: X(OXY. CONTENT); W1,W2,W(POLLUTION CONTENT)
|
||
115 REM OTHERS ARE DEFINED AS THEY APPEAR; EITHER IN PRINTS OR REMS
|
||
120 REM DEVELOPED BY L. BRAUN, T. LIAO, AND D. PESSEL
|
||
125 REM PROGRAMMED BY L. BRAUN, C. LOSIK, AND D. PESSEL
|
||
130 REM LATEST REVISION: 8-18-71
|
||
135 DIM X(51),W(51)
|
||
140 PRINT " ","WATER POLLUTION STUDY"
|
||
145 PRINT
|
||
150 PRINT "INSTRUCTIONS (1=YES, 0=NO)";
|
||
155 INPUT Q
|
||
160 IF Q=0 THEN 310
|
||
165 IF Q <> 1 THEN 150
|
||
170 REM INTRODUCTION
|
||
175 PRINT
|
||
180 PRINT
|
||
185 PRINT "IN THIS STUDY YOU CAN SPECIFY ";
|
||
190 PRINT "THE FOLLOWING CHARACTERISTICS:"
|
||
195 PRINT
|
||
200 PRINT "A. THE KIND OF BODY OF WATER:"
|
||
205 PRINT " 1. LARGE POND"
|
||
210 PRINT " 2. LARGE LAKE"
|
||
215 PRINT " 3. SLOW-MOVING RIVER"
|
||
220 PRINT " 4. FAST-MOVING RIVER"
|
||
225 PRINT
|
||
230 PRINT "B. THE WATER TEMPERATURE IN DEGREES FAHRENHEIT:"
|
||
235 PRINT
|
||
240 PRINT "C. THE KIND OF WASTE DUMPED INTO THE WATER:"
|
||
245 PRINT " 1. INDUSTRIAL"
|
||
250 PRINT " 2. SEWAGE"
|
||
255 PRINT
|
||
260 PRINT "D. THE RATE OF DUMPING OF WASTE,";
|
||
265 PRINT " IN PARTS PER MILLION (PPM)/DAY."
|
||
270 PRINT
|
||
275 PRINT "E. THE TYPE OF TREATMENT OF THE WASTE:"
|
||
280 PRINT " 0. NONE "
|
||
285 PRINT " 1. PRIMARY (SEDIMENTATION OR PASSAGE THROUGH FINE"
|
||
290 PRINT " SCREENS TO REMOVE GROSS SOLIDS)"
|
||
295 PRINT " 2. SECONDARY (SAND FILTERS OR THE ACTIVATED SLUDGE"
|
||
300 PRINT " METHOD TO REMOVE DISSOLVED AND COLLOIDAL"
|
||
305 PRINT " ORGANIC MATTER)"
|
||
310 PRINT
|
||
315 PRINT
|
||
320 PRINT "***********"
|
||
325 PRINT
|
||
330 REM INPUT PARAMETERS
|
||
335 PRINT "BODY OF WATER";
|
||
340 INPUT Q
|
||
345 REM D1: RATE OF INJECTION OF NATURAL POLLUTANTS
|
||
350 LET D1=2
|
||
355 REM N: NATURAL WASTE DECOMPOSITION COEFF.
|
||
360 LET N=.75
|
||
365 REM C: RATE OF WATER ABSORPTION OF OXYGEN (BASED ON Q)
|
||
370 IF Q=4 THEN 420
|
||
375 IF Q=3 THEN 410
|
||
380 IF Q=2 THEN 400
|
||
385 IF Q <> 1 THEN 335
|
||
390 LET C=.4
|
||
395 GOTO 425
|
||
400 LET C=1
|
||
405 GOTO 425
|
||
410 LET C=1.5
|
||
415 GOTO 425
|
||
420 LET C=3
|
||
425 PRINT "WATER TEMPERATURE";
|
||
430 INPUT T
|
||
435 IF T>90 THEN 1055
|
||
440 IF T <= 32 THEN 1070
|
||
445 IF T>50 THEN 465
|
||
450 REM X9=MAX. OXYGEN CONTENT OF WATER
|
||
455 LET X9=15-2*(T-32)/9
|
||
460 GOTO 470
|
||
465 LET X9=11-(T-50)/9
|
||
470 PRINT "KIND OF WASTE";
|
||
475 INPUT Q
|
||
480 REM H: HUMAN WASTE DECOMPOSITION COEFF.
|
||
485 IF Q=2 THEN 505
|
||
490 IF Q <> 1 THEN 470
|
||
495 LET H=.25
|
||
500 GOTO 510
|
||
505 LET H=.75
|
||
510 PRINT "DUMPING RATE";
|
||
515 INPUT D2
|
||
520 REM KEEPS D2 IN RANGE 0 TO 14
|
||
525 IF ABS(D2-7)>7 THEN 1040
|
||
530 REM W1: WASTE DUE TO NATURAL POLLUTANTS; INITIALIZATION
|
||
535 REM W2: WASTE DUE TO HUMANS; INITIALIZATION
|
||
540 REM X: OXYGEN CONTENT; INITIALIZATION
|
||
545 LET W1=D1/N
|
||
550 LET W2=0
|
||
555 LET X=X9-D1/C
|
||
560 REM W(1),X(1): INITIALIZE STORAGE ARRAYS (TOTAL WASTE,OXYGEN)
|
||
565 REM T2,K: STORE DAY FISH BEGIN TO DIE, IF THEY DO
|
||
570 REM T9: NEEDED FOR DAY COUNT; M: TOTAL DAYS FOR RUN
|
||
575 REM T1: INTEGRATION INTERVAL
|
||
580 LET T2=0
|
||
585 LET T9=0
|
||
590 LET K=0
|
||
595 LET T1=.1
|
||
600 LET W(1)=W1+W2
|
||
605 LET X(1)=X
|
||
610 LET M=31
|
||
615 REM D2: RATE OF INJECTION OF HUMAN POLLUTANTS
|
||
620 PRINT "TYPE OF TREATMENT";
|
||
625 INPUT Q
|
||
630 IF Q=0 THEN 660
|
||
635 IF Q=1 THEN 655
|
||
640 IF Q <> 2 THEN 620
|
||
645 LET D2=.1*D2
|
||
650 GOTO 660
|
||
655 LET D2=.5*D2
|
||
660 PRINT
|
||
665 PRINT
|
||
670 FOR J=2 TO M
|
||
675 FOR I=1 TO 10
|
||
680 LET T9=T9+T1
|
||
685 REM PAIR OF DIFF. EQNS. , EULER INTEGRATION
|
||
690 LET X=X+T1*(C*(X9-X)-N*W1-H*W2)
|
||
695 REM PREVENTS NEGATIVE OXYGEN LEVEL
|
||
700 IF X>0 THEN 710
|
||
705 LET X=0
|
||
710 LET W1=W1+T1*(D1-N*W1)
|
||
715 LET W2=W2+T1*(D2-H*W2)
|
||
720 IF X>5 THEN 740
|
||
725 LET K=K+1
|
||
730 IF K>1 THEN 740
|
||
735 LET T2=INT(T9)
|
||
740 NEXT I
|
||
745 REM W(J),X(J): STORAGE OF RESULTS IN ARRAYS
|
||
750 LET X(J)=X
|
||
755 LET W(J)=W1+W2
|
||
760 NEXT J
|
||
765 PRINT "DO YOU WANT: A GRAPH(1), A TABLE(2), OR BOTH(3)";
|
||
770 INPUT Q
|
||
775 IF (Q-1)*(Q-2)*(Q-3) <> 0 THEN 765
|
||
780 PRINT
|
||
785 PRINT
|
||
790 REM TABLE OUTPUT ROUTINE
|
||
795 IF K<1 THEN 820
|
||
800 PRINT
|
||
805 PRINT
|
||
810 PRINT "AFTER DAY";T2;"THE GAME FISH BEGIN TO DIE, BECAUSE"
|
||
815 PRINT "THE OXYGEN CONTENT OF THE WATER DROPPED BELOW 5 PPM."
|
||
820 PRINT
|
||
825 IF Q<2 THEN 880
|
||
830 PRINT
|
||
835 PRINT
|
||
840 PRINT "TIME","OXY. CONTENT","WASTE CONTENT"
|
||
845 PRINT "DAYS"," PPM "," PPM "
|
||
850 PRINT "----","------------","-------------"
|
||
855 FOR J=1 TO M
|
||
860 PRINT J-1,INT(100*X(J)+.5)/100,INT(100*W(J)+.5)/100
|
||
865 NEXT J
|
||
870 IF Q=2 THEN 1005
|
||
875 REM GRAPHING ROUTINE
|
||
880 PRINT
|
||
885 PRINT
|
||
890 PRINT " 0...OXYGEN-SCALE....5...OXYGEN-SCALE...10";
|
||
895 PRINT "...OXYGEN-SCALE...15"
|
||
900 PRINT " 0..WASTE.10..SCALE.20..WASTE.30..SCALE.40";
|
||
905 PRINT "..WASTE.50..SCALE.60"
|
||
910 PRINT "DAY I---------I---------I---------I---------I";
|
||
915 PRINT "---------I---------I"
|
||
920 FOR J=1 TO M
|
||
925 PRINT J-1;TAB(6);"I";
|
||
930 IF 4*X(J)>W(J) THEN 945
|
||
935 PRINT TAB(7+INT(4*X(J)+.5));"0";TAB(7+INT(W(J)+.5));"W"
|
||
940 GOTO 950
|
||
945 PRINT TAB(7+INT(W(J)+.5));"W";TAB(7+INT(4*X(J)+.5));"O"
|
||
950 IF J<5 THEN 985
|
||
955 FOR K=1 TO 4
|
||
960 REM DETERMINES WHEN SYSTEM HAS REACHED EQUILIBRIUM
|
||
965 IF INT(W(J)+.5) <> INT(W(J-K)+.5) THEN 985
|
||
970 IF INT(4*X(J)+.5) <> INT(4*X(J-K)+.5) THEN 985
|
||
975 NEXT K
|
||
980 GOTO 990
|
||
985 NEXT J
|
||
990 PRINT
|
||
995 PRINT "THE WASTE CONTENT AND OXYGEN CONTENT WILL REMAIN AT"
|
||
1000 PRINT "THESE LEVELS UNTIL ONE OF THE VARIABLES CHANGES."
|
||
1005 PRINT
|
||
1010 PRINT
|
||
1015 PRINT "ANOTHER RUN (1=YES, 0=NO)";
|
||
1020 INPUT Q
|
||
1025 IF Q=1 THEN 310
|
||
1030 IF Q <> 0 THEN 1015
|
||
1035 STOP
|
||
1040 PRINT "NEW YORK CITY ONLY POLLUTES ITS WATER AT THE RATE OF"
|
||
1045 PRINT "12 PPM/DAY. MAKE YOUR RATE BETWEEN 0 AND 14."
|
||
1050 GOTO 510
|
||
1055 PRINT "THE WATER TEMPERATURE IS HIGH ENOUGH TO DESTROY MOST LIFE."
|
||
1060 PRINT "TRY A NEW TEMPERATURE."
|
||
1065 GOTO 425
|
||
1070 PRINT "YOUR BODY OF WATER IS A BLOCK OF ICE, AND CAN'T"
|
||
1075 PRINT "ACCEPT ANY WASTE. TRY A NEW TEMPERATURE."
|
||
1080 GOTO 425
|
||
1085 END
|
||
*U*,? |