REM mw5bbc.bas - jackord@kw.igs.net - 23 Apr 07 - BBC BASIC (RTR) REM transmitted amplitude versus (k[in]/k[out])^2 (negative for tunneling) REM the well/barrier width equals the incident wavelength *FLOAT 64 INSTALL @lib$+"WINLIB5" REM Initialize Window button% = FN_button("Plot", 10, 10, 50, 20, FN_setproc(PROCPLOT), 0) WindowWidth=500 : REM pixel scale 0-500 WindowHeight=360 : REM pixel scale 0-360 VDU 23,22,WindowWidth;WindowHeight;8,15,16,128 SYS "SetWindowText", @hwnd%, "Transmitted Amplitude" PROCpin REPEAT WAIT 1 UNTIL FALSE DEF PROCPLOT PROCpin FOR i=-99 TO 299 IF i=0 THEN i=i+1 k=i*.01: a=2*k*PI IF i<0 THEN c=(EXP(0-a)+EXP(a))/2: s=(EXP(0-a)-EXP(a))/2 x=0-k*k: t=1/(c*c+s*s*(k-1/k)^2/4)^.5 ELSE c=COS(a): s=SIN(a) x=k*k: t=1/(c*c+s*s*(k+1/k)^2/4)^.5 ENDIF IF i=-99 THEN MOVE 256+2*INT(40*x), 96+2*INT(300*t) ELSE DRAW 256+2*INT(40*x), 96+2*INT(300*t) ENDIF NEXT i ENDPROC DEF PROCpin CLS : GCOL 0 : VDU 5 RECTANGLE 176, 96, 800, 600 MOVE 170, 80 : PRINT "-1"; MOVE 970, 80 : PRINT "9"; MOVE 480, 56 : PRINT "(k[in]/k[out])^2"; MOVE 152, 108 : PRINT "0"; MOVE 152, 708 : PRINT "1"; MOVE 0, 424 : PRINT "Transmitted"; MOVE 16, 384 : PRINT "Amplitude"; FOR i=1 TO 9 LINE 176+80*i, 96, 176+80*i, 696 LINE 176, 96+60*i, 976, 96+60*i NEXT i GCOL 12 ENDPROC