home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / public / penstate / mutual.bas < prev    next >
BASIC Source File  |  1996-06-30  |  4KB  |  107 lines

  1. 5 ' ////////////// MUTUAL //////////////
  2. 10 CLS:KEY OFF :ON ERROR GOTO 1700
  3. 20 KEY 1,"":KEY 10,"":X1=24:X2=52:Y1=2:Y2=6:GOSUB 1600 :COLOR 0,7
  4. 30 LOCATE 3,25:PRINT "      MUTUAL IMPEDANCE     ":LOCATE 4,25:PRINT "   BETWEEN TWO DIPOLES OF  " :LOCATE 5,25:PRINT " ANY LENGTH AND SEPERATION ":COLOR 7,0
  5. 40 :
  6. 50 '        MAY 28, 86
  7. 60 '       AHMAD FAIZAL MOHD ZAIN
  8. 70 '
  9. 80 PI=3.141592
  10. 90 GOTO 290      'MAIN PROG
  11. 100 '
  12. 110 '   SUBROUTINE TO GET SI(X) AND CI(X)
  13. 120 '
  14. 130 '    INPUT X
  15. 140 '    OUTPUT SI,CI,CIN
  16. 150 '
  17. 160 X1=X: X2=X*X: X3=X2*X: X4=X3*X: X5=X4*X: X6=X5*X: X7=X6*X
  18. 170 IF X>=1 THEN 220
  19. 180 SI=X-X3/8+X5/600-X7/35280!
  20. 190 IF X=0 THEN PRINT"CI(X) UNDEFINED FOR X=0 ":RETURN
  21. 200 CI=.5772157+LOG(X)-X2/4+X4/96-X6/4320
  22. 210 GOTO 260
  23. 220 FX=((X4+7.24116*X2+2.46394)/(X4+9.068579*X2+7.15743))/X
  24. 230 GX=((X4+7.54748*X2+1.56407)/(X4+12.72368*X2+15.72361))/X2
  25. 240 SI=PI/2-FX*COS(X)-GX*SIN(X)
  26. 250 CI=FX*SIN(X)-GX*COS(X)
  27. 260 CIN=LOG(X)+.5772157-CI
  28. 270 RETURN
  29. 280 '
  30. 290 'MAIN PROGRAM
  31. 310 :
  32. 320 LOCATE 7,1
  33. 340 INPUT "LENGTH OF DIPOLE IN TERMS OF LAMBDA ";H
  34. 350 INPUT "SEPERATION BETWEEN DIPOLES IN TERMS OF LAMBDA ";D
  35. 352 IF D=0 AND H=.5 THEN R21=73.1296:X21=42.5445:GOTO 870
  36. 360 U0=2*PI*D
  37. 370 U1=2*PI*(SQR(D*D+H*H)-H)
  38. 380 V1=2*PI*(SQR(D*D+H*H)+H)
  39. 390 X=U0:GOSUB 110:SIU0=SI:CIU0=CI
  40. 400 X=U1:GOSUB 110:SIU1=SI:CIU1=CI
  41. 410 X=V1:GOSUB 110:SIV1=SI:CIV1=CI
  42. 420 R21=30*(2*CIU0-CIU1-CIV1)     'REAL PART OF MUTUAL IMP
  43. 430 X21=-30*(2*SIU0-SIU1-SIV1)    'IMAG PART OF MUTUAL IMP
  44. 440 GOTO 870
  45. 450 'COLLINEAR
  46. 460 INPUT"LENGTH OF DIPOLES IN TERMS OF LAMBDA ";H
  47. 470 INPUT"SEPERATION BETWEEN DIPOLES IN TERMS OF LAMBDA ";D
  48. 480 V0=2*PI*(H+D)
  49. 490 V1=4*PI*(2*H+D)
  50. 500 V2=4*PI*D
  51. 510 V3=((H+D)*(H+D)-H*H)/((H+D)*(H+D))
  52. 520 CV0=COS(V0):SV0=SIN(V0)
  53. 530 X=2*V0:GOSUB 110:SI2V0=SI:CI2V0=CI
  54. 540 X=V1:GOSUB 110:SIV1=SI:CIV1=CI
  55. 550 X=V2:GOSUB 110:SIV2=SI:CIV2=CI
  56. 560 X=V3:GOSUB 110:SIV3=SI:CIV3=CI
  57. 570 AA=-15*CV0*(-2*CI2V0+CIV2+CIV1-LOG(V3))
  58. 580 BB=15*SV0*(2*SI2V0-SIV2-SIV1)
  59. 590 R21=AA+BB
  60. 600 CC=-15*CV0*(2*SI2V0-SIV2-S1V1)
  61. 610 DD=15*SV0*(2*CI2V0-CIV2-CIV1-LOG(V3))
  62. 620 X21=CC+DD
  63. 630 GOTO 870
  64. 640 'ECHELON
  65. 650 INPUT"LENGTH OF DIPOLES IN TERMS OF LAMBDA ";H
  66. 660 INPUT"SEPERATION OF DIPOLES IN TERMS OF LAMBDA ";D
  67. 670 INPUT"HEIGHT OF SECOND DIPOLE ABOVE END OF FIRST ";L
  68. 680 W0=2*PI*L
  69. 690 W1=2*PI*(SQR(D*D+L*L)+L)
  70. 700 W11=2*PI*(SQR(D*D+L*L)-L)
  71. 710 W2=2*PI*(SQR(D*D+(L-H)*(L-H))+(L-H))
  72. 720 W22=2*PI*(SQR(D*D+(L-H)*(L-H))-(L-H))
  73. 730 W3=2*PI*(SQR(D*D+(H+L)*(H+L))+(H+L))
  74. 740 W33=2*PI*(SQR(D*D+(H+L)*(H+L))-(H+L))
  75. 745 CW0=COS(W0):SW0=SIN(W0)
  76. 750 X=W1:GOSUB 110:SIW1=SI:CIW1=CI
  77. 760 X=W11:GOSUB 110:SIW11=SI:CIW11=CI
  78. 770 X=W2:GOSUB 110:SIW2=SI:CIW2=CI
  79. 780 X=W22:GOSUB 110:SIW22=SI:CIW22=CI
  80. 790 X=W3:GOSUB 110:SIW3=SI:CIW3=CI
  81. 800 X=W33:GOSUB 110:SIW33=SI:CIW33=CI
  82. 810 AA=-15*CW0*(-2*CIW1-2*CIW11+CIW2+CIW22+CIW3+CIW33)
  83. 820 BB=15*SW0*(2*SIW1-2*SIW11-SIW2+SIW22-SIW3+SIW33)
  84. 830 CC=-15*CW0*(2*SIW1+2*SIW11-SIW2-SIW22-SIW3-SIW33)
  85. 840 DD=15*SW0*(2*CIW1-2*CIW11-CIW2+CIW22-CIW3+CIW33)
  86. 850 R21=AA+BB
  87. 860 X21=CC+DD
  88. 870 IF X21<0 THEN SIGN$=" -j" ELSE SIGN$=" +j"
  89. 880 PRINT:PRINT
  90. 890 LOCATE 12,1
  91. 900 PRINT USING "MUTUAL IMPEDANCE BETWEEN THE DIPOLES IS ###.###";R21;:PRINT SIGN$;:PRINT USING "###.###";ABS(X21)
  92. 910 COLOR 15,0:LOCATE 25,18:PRINT "R - Run Again  E - End  S - Start Program ";CHR$(29);:COLOR 7,0
  93. 920 AN$=INKEY$
  94. 930 IF AN$="R" OR AN$="r" THEN RUN
  95. 940 IF AN$="E" OR AN$="e" THEN LOCATE 23,1:END
  96. 950 IF AN$="S" OR AN$="s" THEN RUN "START
  97. 960 GOTO 920
  98. 970 :
  99. 1500 SCREEN 0,0,0:SOUND 1510,10:COLOR 7,0:LOCATE 25,10:PRINT "Key: Esc to End or `R' to Run Again or `S' to Return Start";CHR$(29);:COLOR 15,0:LOCATE 25,15:PRINT "Esc";:LOCATE 25,30:PRINT "R";:LOCATE 25,50:PRINT "S";CHR$(29);:COLOR 7,0
  100. 1510 E$=INKEY$:IF E$="" THEN 1510 ELSE IF E$=CHR$(27) THEN CLS:END ELSE IF E$="R" OR E$="r" THEN RUN ELSE IF E$="S" OR E$="s" THEN RUN "START
  101. 1520 GOTO 1510
  102. 1600 '//////////////// Routine to Draw a Box //////////////////
  103. 1610 LOCATE Y1,X1+1:PRINT STRING$(X2-X1-1,"─");:LOCATE Y1,X1:PRINT "┌";:LOCATE Y1,X2:PRINT "╖";:FOR I= Y1+1 TO Y2-1:LOCATE I,X1:PRINT "│";:LOCATE I,X2:PRINT "║";:NEXT:LOCATE Y2,X1:PRINT "╘";:LOCATE Y2,X1+1
  104. 1620 PRINT STRING$(X2-X1-1,"═");:LOCATE Y2,X2:PRINT "╝";:RETURN
  105. 1700 SCREEN 0,0,0:COLOR 31,1:LOCATE 24,1:PRINT "Fault Detected";CHR$(29);:COLOR 7,0
  106. 1710 RESUME 1500
  107.