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

  1. 10 REM MOMENT METHOD SOLUTION TO WIRE DIPOLE
  2. 20 REM "ANTENNA DESIGN USING PERSONAL COMPUTERS"
  3. 30 DIM ZLR(11),ZLI(11),CR(11),CI(11),V(11)
  4. 40 DIM ZR(66),ZI(66),A(5)
  5. 50 DEF FNCABS(X,Y)=SQR(X*X+Y*Y)
  6. 60 DEF FNDIVR(X1,Y1,X2,Y2)=(X1*X2+Y1*Y2)/(X2*X2+Y2*Y2)
  7. 70 DEF FNDIVI(X1,Y1,X2,Y2)=(Y1*X2-X1*Y2)/(X2*X2+Y2*Y2)
  8. 80 DEF FNINDX(I,J,N)=(I-1)*N-(I*I-I)/2+J
  9. 90 DEF FNLOG10(X)=.4343*LOG(X)
  10. 100 PI=3.141593
  11. 110 KEY OFF
  12. 120 CLS
  13. 130 COLOR 1,0
  14. 140 PRINT "THIS PROGRAM DOES A MOMENT METHOD SOLUTION FOR A"
  15. 150 PRINT "WIRE DIPOLE IN FREE-SPACE."
  16. 160 COLOR 4,0
  17. 170 PRINT
  18. 180 INPUT "WHAT IS THE FREQUENCY(MHz)";FMC
  19. 190 INPUT "WHAT IS THE DIPOLE LENGTH(meters)";DL
  20. 200 INPUT "WHAT IS THE DIPOLE RADIUS(meters)";AM
  21. 210 INPUT "HOW MANY PWS EXPANSION MODES";N
  22. 220 IF N>11 THEN GOTO 210
  23. 230 D=DL/(N+1)
  24. 240 COLOR 14,0
  25. 250 PRINT "MODE #     CO-ORD"
  26. 260 FOR I=1 TO N
  27. 270 Z=-DL/2+I*D
  28. 280 PRINT USING "   ##     ###.###";I,Z
  29. 290 NEXT I
  30. 300 COLOR 4,0
  31. 310 INPUT "AT WHAT MODE IS THE FEED POINT";NF
  32. 320 IF NF>N THEN GOTO 310
  33. 330 IF NF<1 THEN GOTO 310
  34. 340 FOR I=1 TO N
  35. 350 ZLR(I)=0
  36. 360 ZLI(I)=0
  37. 370 NEXT I
  38. 380 INPUT "ARE THERE LUMPED LOADS(Y,N)";LL$
  39. 390 IF LL$="N" THEN GOTO 440
  40. 400 FOR I=1 TO N
  41. 410 PRINT USING "TYPE THE COMPLEX LOAD IMPEDANCE AT MODE ##";I;
  42. 420 INPUT ZLR(I),ZLI(I)
  43. 430 NEXT I
  44. 440 REM COMPUTE Z MATRIX(TOP ROW ONLY)
  45. 450 COLOR 14,0
  46. 460 PRINT
  47. 470 XK0=2*PI*FMC/300
  48. 480 IF D<.0628/XK0 THEN PRINT "CAUTION - SEGMENT LENGTH < 0.01 WVL."
  49. 490 SKD=SIN(XK0*D)
  50. 500 CKD=COS(XK0*D)
  51. 510 FOR I=1 TO N
  52. 520 FOR J=I TO N
  53. 530 K=FNINDX(I,J,N)
  54. 540 IF I>1 THEN GOTO 610
  55. 550 X0=(J-1)*D
  56. 560 GOSUB 2240
  57. 570 ZR(K)=ZMNR
  58. 580 ZI(K)=ZMNI
  59. 590 PRINT I,J,ZMNR,ZMNI
  60. 600 GOTO 640
  61. 610 K1=FNINDX(I-1,J-1,N)
  62. 620 ZR(K)=ZR(K1)
  63. 630 ZI(K)=ZI(K1)
  64. 640 NEXT J
  65. 650 NEXT I
  66. 660 REM ADD LUMPED LOADS
  67. 670 FOR I=1 TO N
  68. 680 K=FNINDX(I,I,N)
  69. 690 ZR(K)=ZR(K)+ZLR(I)
  70. 700 ZI(K)=ZI(K)+ZLI(I)
  71. 710 NEXT I
  72. 720 REM COMPUTE VOLTAGE VECTOR
  73. 730 FOR I=1 TO N
  74. 740 V(I)=0
  75. 750 NEXT I
  76. 760 V(NF)=1
  77. 770 FOR I=1 TO N
  78. 780 K=FNINDX(I,J,N)
  79. 790 CR(I)=V(I)
  80. 800 CI(I)=0
  81. 810 NEXT I
  82. 820 REM SOLVE ZI=V
  83. 830 GOSUB 1140
  84. 840 ZINR=FNDIVR(1,0,CR(NF),CI(NF))
  85. 850 ZINI=FNDIVI(1,0,CR(NF),CI(NF))
  86. 860 REM PRINT CURRENT; COMPUTE POWERS
  87. 870 PRINT "MODE #   CURRENT(RE,IM)"
  88. 880 PD=0
  89. 890 FOR I=1 TO N
  90. 900 PRINT USING "   ##  ##.####  ##.####";I,CR(I),CI(I)
  91. 910 PD=PD+FNCABS(CR(I),CI(I))^2*ZLR(I)
  92. 920 NEXT I
  93. 930 PT=CR(NF)
  94. 940 EFF=(1-PD/PT)*100
  95. 950 PRINT
  96. 960 PRINT USING "INPUT IMPEDANCE=####.## #####.## ohms";ZINR,ZINI
  97. 970 PRINT USING "RADIATION EFFICIENCY=###.#%";EFF
  98. 980 REM COMPUTE BROADSIDE GAIN
  99. 990 GR=0
  100. 1000 GI=0
  101. 1010 FM=60*(1-CKD)/SKD
  102. 1020 FOR I=1 TO N
  103. 1030 GR=GR+CR(I)
  104. 1040 GI=GI+CI(I)
  105. 1050 NEXT I
  106. 1060 GB=FM*FM*(GR*GR+GI*GI)/(30*PT)
  107. 1070 GDB=10*FNLOG10(GB)
  108. 1080 PRINT USING "BROADSIDE GAIN= ##.## dB";GDB
  109. 1090 PRINT
  110. 1100 COLOR 4,0
  111. 1110 INPUT "CONTINUE(Y,N)";IS$
  112. 1120 IF IS$="N" THEN GOTO 2520
  113. 1130 GOTO 120
  114. 1140 REM CHOLESKY LINEAR EQUATION SOLUTION
  115. 1150 PHS=0
  116. 1160 IF ZR(1)<>0 THEN PHS=ATN(ZI(1)/ZR(1))/2
  117. 1170 MAG=SQR(FNCABS(ZR(1),ZI(1)))
  118. 1180 ZR(1)=MAG*COS(PHS)
  119. 1190 ZI(1)=MAG*SIN(PHS)
  120. 1200 FOR K=2 TO N
  121. 1210 ZINR=FNDIVR(ZR(K),ZI(K),ZR(1),ZI(1))
  122. 1220 ZINI=FNDIVI(ZR(K),ZI(K),ZR(1),ZI(1))
  123. 1230 ZR(K)=ZINR
  124. 1240 ZI(K)=ZINI
  125. 1250 NEXT K
  126. 1260 FOR I=2 TO N
  127. 1270 IMO=I-1
  128. 1280 IPO=I+1
  129. 1290 ID=(I-1)*N-(I*I-I)/2
  130. 1300 II=ID+I
  131. 1310 FOR L=1 TO IMO
  132. 1320 LI=FNINDX(L,I,N)
  133. 1330 ZINR=ZR(II)-ZR(LI)*ZR(LI)+ZI(LI)*ZI(LI)
  134. 1340 ZINI=ZI(II)-2*ZR(LI)*ZI(LI)
  135. 1350 ZR(II)=ZINR
  136. 1360 ZI(II)=ZINI
  137. 1370 NEXT L
  138. 1380 PHS=0
  139. 1390 IF ZR(II)<>0 THEN PHS=ATN(ZI(II)/ZR(II))/2
  140. 1400 MAG=SQR(FNCABS(ZR(II),ZI(II)))
  141. 1410 ZR(II)=MAG*COS(PHS)
  142. 1420 ZI(II)=MAG*SIN(PHS)
  143. 1430 IF IPO>N THEN GOTO 1600
  144. 1440 FOR J=IPO TO N
  145. 1450 IJ=ID+J
  146. 1460 FOR M=1 TO IMO
  147. 1470 MD=(M-1)*N-(M*M-M)/2
  148. 1480 MI=MD+I
  149. 1490 MJ=MD+J
  150. 1500 ZINR=ZR(IJ)-ZR(MJ)*ZR(MI)+ZI(MJ)*ZI(MI)
  151. 1510 ZINI=ZI(IJ)-ZR(MJ)*ZI(MI)-ZI(MJ)*ZR(MI)
  152. 1520 ZR(IJ)=ZINR
  153. 1530 ZI(IJ)=ZINI
  154. 1540 NEXT M
  155. 1550 ZINR=FNDIVR(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
  156. 1560 ZINI=FNDIVI(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
  157. 1570 ZR(IJ)=ZINR
  158. 1580 ZI(IJ)=ZINI
  159. 1590 NEXT J
  160. 1600 NEXT I
  161. 1610 ZINR=FNDIVR(CR(1),CI(1),ZR(1),ZI(1))
  162. 1620 ZINI=FNDIVI(CR(1),CI(1),ZR(1),ZI(1))
  163. 1630 CR(1)=ZINR
  164. 1640 CI(1)=ZINI
  165. 1650 FOR I=2 TO N
  166. 1660 IMO=I-1
  167. 1670 FOR L=1 TO IMO
  168. 1680 LI=FNINDX(L,I,N)
  169. 1690 ZINR=CR(I)-ZR(LI)*CR(L)+ZI(LI)*CI(L)
  170. 1700 ZINI=CI(I)-ZR(LI)*CI(L)-ZI(LI)*CR(L)
  171. 1710 CR(I)=ZINR
  172. 1720 CI(I)=ZINI
  173. 1730 NEXT L
  174. 1740 II=FNINDX(I,I,N)
  175. 1750 ZINR=FNDIVR(CR(I),CI(I),ZR(II),ZI(II))
  176. 1760 ZINI=FNDIVI(CR(I),CI(I),ZR(II),ZI(II))
  177. 1770 CR(I)=ZINR
  178. 1780 CI(I)=ZINI
  179. 1790 NEXT I
  180. 1800 NN=((N+1)*N)/2
  181. 1810 ZINR=FNDIVR(CR(N),CI(N),ZR(NN),ZI(NN))
  182. 1820 ZINI=FNDIVI(CR(N),CI(N),ZR(NN),ZI(NN))
  183. 1830 CR(N)=ZINR
  184. 1840 CI(N)=ZINI
  185. 1850 NMO=N-1
  186. 1860 FOR I=1 TO NMO
  187. 1870 K=N-I
  188. 1880 KPO=K+1
  189. 1890 KD=(K-1)*N-(K*K-K)/2
  190. 1900 FOR L=KPO TO N
  191. 1910 KL=KD+L
  192. 1920 ZINR=CR(K)-ZR(KL)*CR(L)+ZI(KL)*CI(L)
  193. 1930 ZINI=CI(K)-ZR(KL)*CI(L)-ZI(KL)*CR(L)
  194. 1940 CR(K)=ZINR
  195. 1950 CI(K)=ZINI
  196. 1960 NEXT L
  197. 1970 KK=KD+K
  198. 1980 ZINR=FNDIVR(CR(K),CI(K),ZR(KK),ZI(KK))
  199. 1990 ZINI=FNDIVI(CR(K),CI(K),ZR(KK),ZI(KK))
  200. 2000 CR(K)=ZINR
  201. 2010 CI(K)=ZINI
  202. 2020 NEXT I
  203. 2030 RETURN
  204. 2040 REM SUBROUTINE TO COMPUTE THE SINE AND COSINE INTEGRALS
  205. 2050 X2=X*X
  206. 2060 X4=X2*X2
  207. 2070 IF X>=1 THEN GOTO 2150
  208. 2080 X6=X2*X4
  209. 2090 X3=X*X2
  210. 2100 X5=X3*X2
  211. 2110 X7=X5*X2
  212. 2120 SI=X-X3/18+X5/600-X7/35280!
  213. 2130 CI=.57722+LOG(X)-X2/4+X4/96-X6/4320
  214. 2140 RETURN
  215. 2150 SX=SIN(X)
  216. 2160 CX=COS(X)
  217. 2170 FX=(X4+7.24116*X2+2.46394)/X
  218. 2180 FX=FX/(X4+9.068579*X2+7.15743)
  219. 2190 GX=(X4+7.54748*X2+1.56407)/X2
  220. 2200 GX=GX/(X4+12.72368*X2+15.72361)
  221. 2210 SI=1.57079-FX*CX-GX*SX
  222. 2220 CI=FX*SX-GX*CX
  223. 2230 RETURN
  224. 2240 REM COMPUTE ZMN TERMS
  225. 2250 A(1)=1
  226. 2260 A(5)=1
  227. 2270 A(2)=-4*CKD
  228. 2280 A(4)=A(2)
  229. 2290 A(3)=2+4*CKD*CKD
  230. 2300 ZMNR=0
  231. 2310 ZMNI=0
  232. 2320 FOR MM=-2 TO 2
  233. 2330 FOR NN=-1 TO 1 STEP 2
  234. 2340 TT=X0+MM*D
  235. 2350 BET=AM
  236. 2360 IF ABSYYAM THEN GOTO 2390
  237. 2370 BET=SQR(AM*AM+TT*TT)-NN*TT
  238. 2380 IF BET<AM/10 THEN BET=AM*AM/(2*ABS(TT))-AM^4/(8*ABS(TT)^3)
  239. 2390 X=BET*XK0
  240. 2400 ALP=XK0*NN*TT
  241. 2410 CALP=COS(ALP)
  242. 2420 SALP=SIN(ALP)
  243. 2430 GOSUB 2040
  244. 2440 ZMNR=ZMNR+A(MM+3)*(CALP*CI-SALP*SI)
  245. 2450 ZMNI=ZMNI-A(MM+3)*(SALP*CI+CALP*SI)
  246. 2460 NEXT NN
  247. 2470 NEXT MM
  248. 2480 SKDS=SKD*SKD
  249. 2490 ZMNR=ZMNR*15/SKDS
  250. 2500 ZMNI=ZMNI*15/SKDS
  251. 2510 RETURN
  252. 2520 COLOR 7,0
  253. 2530 KEY ON
  254. 2540 END
  255.