home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / ant / antdesgn / woodlaw.bas < prev    next >
BASIC Source File  |  1979-12-31  |  4KB  |  165 lines

  1. 10 REM WOODWARD-LAWSON ARRAY SYNTHESIS
  2. 20 REM "ANTENNA DESIGN USING PERSONAL COMPUTERS"
  3. 30 DIM A(30),F(180),FD(181),AD(10),BD(10),CD(10),DD(10),ED(10),BP(10)
  4. 40 DIM THN(30)
  5. 50 KEY OFF
  6. 60 PI=3.14159
  7. 70 ROD=PI/180
  8. 80 SCREEN 0,1
  9. 90 CLS
  10. 100 REM CLEAR FD ARRAY
  11. 110 FOR I=0 TO 181
  12. 120 FD(I)=0
  13. 130 NEXT I
  14. 140 COLOR 1,0
  15. 150 PRINT "WOODWARD-LAWSON ARRAY SYNTHESIS"
  16. 160 COLOR 4,0
  17. 170 PRINT
  18. 180 INPUT "HOW MANY ELEMENTS IN ARRAY";P
  19. 190 INPUT "WHAT IS THE ELEMENT SPACING(WAVELENGTHS)";D
  20. 200 PRINT "SPECIFY DESIRED PATTERN FROM THETA=0 TO 180 degrees"
  21. 210 INPUT "IN PIECEWISE FORM (P) OR IN SAMPLED FORM (S)";IS$
  22. 220 IF IS$="P" THEN GOTO 250
  23. 230 IF IS$="S" THEN GOTO 500
  24. 240 GOTO 200
  25. 250 PRINT
  26. 260 PRINT "ENTER SEGMENT ENDPOINTS IN DEGREES AND COEFFICIENTS OF DESIRED"
  27. 270 PRINT "PATTERN OF FORM: A + B*COS(THETA)**C + D*SIN(THETA)**E"
  28. 280 TH1=0
  29. 290 I=0
  30. 300 I=I+1
  31. 310 PRINT USING "FROM THETA=###. TO";TH1;
  32. 320 INPUT BP(I),AD(I),BD(I),CD(I),DD(I),ED(I)
  33. 330 IF BP(I)>180 THEN BP(I)=180
  34. 340 TH1=BP(I)
  35. 350 IF TH1<180 THEN GOTO 300
  36. 360 BP(I+1)=181
  37. 370 REM FILL FD WITH DESIRED PATTERN IN PIECEWISE FORM
  38. 380 IB=1
  39. 390 FOR I=0 TO 180
  40. 400 THR=I*ROD
  41. 410 IF I>BP(IB) THEN IB=IB+1
  42. 420 FD(I)=AD(IB)+BD(IB)*COS(THR)^CD(IB)+DD(IB)*SIN(THR)^ED(IB)
  43. 430 NEXT I
  44. 440 REM USE AVERAGE VALUES AT BREAKPOINTS OF FD
  45. 450 IB=1
  46. 460 FOR I=0 TO 180
  47. 470 IF I>BP(IB) THEN IB=IB+1
  48. 480 IF I=BP(IB) THEN FD(I)=.5*(FD(I)+FD(I+1))
  49. 490 NEXT I
  50. 500 IEVEN=0
  51. 510 IF P/2=INT(P/2) THEN IEVEN=1
  52. 520 N=P/2
  53. 530 IF IEVEN=0 THEN N=(P-1)/2
  54. 540 L=P*D
  55. 550 REM FILL THN ARRAY WITH THETA(AN)
  56. 560 FOR M=-N TO N
  57. 570 WN=M/L
  58. 580 TH=90
  59. 590 IF WN<>0 THEN TH=180/PI*ATN(SQR(1-WN*WN)/WN)
  60. 600 IF WN=-1 THEN TH=180
  61. 610 IF TH<0 THEN TH=TH+180
  62. 620 THN(N+M)=TH
  63. 630 NEXT M
  64. 640 IF IS$="P" THEN GOTO 720
  65. 650 REM FILL FD ARRAY FROM SAMPLES
  66. 660 PRINT
  67. 670 FOR M=N TO -N STEP -1
  68. 680 TH=THN(M+N)
  69. 690 PRINT USING "THETA=###.# degrees, FD(THETA)=";TH;
  70. 700 INPUT FD(TH)
  71. 710 NEXT M
  72. 720 REM NORMALIZE FD
  73. 730 FDM=0
  74. 740 FOR I=0 TO 180
  75. 750 IF FD(I)>FDM THEN FDM=FD(I)
  76. 760 NEXT I
  77. 770 IF FDM=0 THEN PRINT "ERROR-DESIRED PATTERN ALWAYS < 0"
  78. 780 FOR I=0 TO 180
  79. 790 FD(I)=FD(I)/FDM
  80. 800 NEXT I
  81. 810 REM FILL A ARRAY
  82. 820 FOR M=N TO -N STEP -1
  83. 830 TH=THN(M+N)
  84. 840 A(N+M)=FD(TH)
  85. 850 NEXT M
  86. 860 REM COMPUTE CURRENTS
  87. 870 PRINT
  88. 880 COLOR 14,0
  89. 890 PRINT "ELEMENT CURRENTS"
  90. 900 FOR M=-N TO N
  91. 910 IF IEVEN=1 AND M=0 THEN GOTO 1040
  92. 920 IR=0
  93. 930 II=0
  94. 940 ZM=M*D
  95. 950 IF IEVEN=1 AND M>0 THEN ZM=(2*M-1)*D/2
  96. 960 IF IEVEN=1 AND M<0 THEN ZM=(2*M+1)*D/2
  97. 970 FOR NN=-N TO N
  98. 980 IF A(NN+N)=0 THEN GOTO 1020
  99. 990 ARG=2*PI*ZM*NN/L
  100. 1000 IR=IR+A(NN+N)*COS(ARG)/P
  101. 1010 II=II-A(NN+N)*SIN(ARG)/P
  102. 1020 NEXT NN
  103. 1030 PRINT USING "###   ##.####  ##.####";M,IR,II
  104. 1040 NEXT M
  105. 1050 PRINT
  106. 1060 COLOR 4,0
  107. 1070 INPUT "DO YOU WISH TO PLOT PATTERNS(Y,N)";IP$
  108. 1080 IF IP$<>"N" THEN GOTO 1120
  109. 1090 INPUT "CONTINUE(Y,N)";IS$
  110. 1100 IF IS$="N" THEN GOTO 1610
  111. 1110 GOTO 80
  112. 1120 SCREEN 2,0
  113. 1130 VIEW (242,3)-(638,181)
  114. 1140 WINDOW (-3,-.4)-(185,1.5)
  115. 1150 LINE (0,0)-(180,0)
  116. 1160 FOR I=0 TO 180 STEP 30
  117. 1170 LINE (I,-.06)-(I,0)
  118. 1180 NEXT I
  119. 1190 LINE (90,0)-(90,1.5)
  120. 1200 FOR I=.25 TO 1.5 STEP .25
  121. 1210 LINE (85,I)-(95,I)
  122. 1220 NEXT I
  123. 1230 LOCATE 20,32
  124. 1240 PRINT "0      30      60      90     120     150     180"
  125. 1250 LOCATE 21,54
  126. 1260 PRINT "THETA"
  127. 1270 REM PLOT DATA
  128. 1280 IF IS$="S" THEN GOTO 1340
  129. 1290 REM PLOT DESIRED PATTERN IN PIECEWISE FORM
  130. 1300 PSET (0,FD(0))
  131. 1310 FOR I=1 TO 180
  132. 1320 LINE -(I,FD(I)),,,&HAAAA
  133. 1330 NEXT I
  134. 1340 REM PLOT SAMPLE POINTS
  135. 1350 FOR I=N TO -N STEP -1
  136. 1360 TH=THN(I+N)
  137. 1370 CIRCLE (TH,FD(TH)),3
  138. 1380 NEXT I
  139. 1390 FOR I=0 TO 180
  140. 1400 W=COS(I*ROD)
  141. 1410 F(I)=0
  142. 1420 FOR M=-N TO N
  143. 1430 IF A(M+N)=0 THEN GOTO 1520
  144. 1440 WN=M/L
  145. 1450 T=P
  146. 1460 CC=PI*D*(W-WN)
  147. 1470 T1=SIN(P*CC)
  148. 1480 T2=SIN(CC)
  149. 1490 IF ABS(W-WN)>.001 THEN T=T1/T2
  150. 1500 IF ABS(W-WN)>.001 AND ABS(T1)<.001 THEN T=0
  151. 1510 F(I)=F(I)+A(M+N)*T/P
  152. 1520 NEXT M
  153. 1530 IF I=0 THEN PSET (0,F(0))
  154. 1540 LINE -(I,F(I))
  155. 1550 NEXT I
  156. 1560 LOCATE 1,1
  157. 1570 PRINT "LINEAR SCALE"
  158. 1580 LOCATE 2,1
  159. 1590 INPUT "CONTINUE(Y,N)";IS$
  160. 1600 IF IS$<>"N" THEN GOTO 80
  161. 1610 SCREEN 0,1
  162. 1620 COLOR 7,0
  163. 1630 KEY ON
  164. 1640 END
  165.