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

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