home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
ant
/
antenna
/
flddipol.bas
< prev
next >
Wrap
BASIC Source File
|
1979-12-31
|
6KB
|
237 lines
10 REM MOMENT METHOD SOLUTION TO A FOLDED WIRE DIPOLE
20 REM "ANTENNA DESIGN USING PERSONAL COMPUTERS"
30 DIM CR(11),CI(11),V(11),ZR(66),ZI(66),A(5)
40 DEF FNCABS(X,Y)=SQR(X*X+Y*Y)
50 DEF FNDIVR(X1,Y1,X2,Y2)=(X1*X2+Y1*Y2)/(X2*X2+Y2*Y2)
60 DEF FNDIVI(X1,Y1,X2,Y2)=(Y1*X2-X1*Y2)/(X2*X2+Y2*Y2)
70 DEF FNINDX(I,J,N)=(I-1)*N-(I*I-I)/2+J
80 PI=3.141593
90 KEY OFF
100 CLS
110 COLOR 1,0
120 PRINT "THIS PROGRAM DOES A MOMENT METHOD SOLUTION FOR A"
130 PRINT "FOLDED DIPOLE ANTENNA."
140 COLOR 4,0
150 PRINT
160 INPUT "WHAT IS THE FREQUENCY(MHz)";FMC
170 INPUT "WHAT IS THE DIPOLE LENGTH(meters)";DL
180 INPUT "WHAT ARE THE TWO CONDUCTOR RADII(meters)";R1,R2
190 INPUT "WHAT IS THE CONDUCTOR SEPARATION(meters)";DD
200 IF DD<=R1+R2 THEN GOTO 180
210 INPUT "HOW MANY PWS EXPANSION MODES(ODD) ON DIPOLE";N
220 IF N/2=INT(N/2) THEN GOTO 210
230 IF N>11 THEN GOTO 210
240 PRINT
250 COLOR 14,0
260 D=DL/(N+1)
270 NF=(N+1)/2
280 XK0=2*PI*FMC/300
290 IF D<.0628/XK0 THEN PRINT "CAUTION - SEGMENT LENGTH < 0.01 WVL."
300 REM COMPUTE CONSTANTS FOR FOLDED DIPOLE TRANSFORMATIONS
310 UU=R2/R1
320 VV=DD/R1
330 X=(1+VV*VV-UU*UU)/(2*VV)
340 HC1=LOG(X+SQR(X*X-1))
350 X=(VV*VV+UU*UU-1)/(2*VV*UU)
360 HC2=LOG(X+SQR(X*X-1))
370 AA=HC1/HC2
380 Z0=60*(HC1+HC2)
390 AM=R1*EXP((UU*UU*LOG(UU)+2*UU*LOG(VV))/(1+UU)^2)
400 ZF=1E+08
410 X=COS(XK0*DL/2)
420 IF ABS(X)>.001 THEN ZF=Z0*SIN(XK0*DL/2)/X
430 PRINT USING "EQUIVALENT RADIUS=#.###### meters";AM
440 REM COMPUTE Z MATRIX(TOP ROW ONLY)
450 SKD=SIN(XK0*D)
460 CKD=COS(XK0*D)
470 FOR I=1 TO N
480 FOR J=I TO N
490 K=FNINDX(I,J,N)
500 IF I>1 THEN GOTO 570
510 X0=(J-1)*D
520 GOSUB 2060
530 ZR(K)=ZMNR
540 ZI(K)=ZMNI
550 PRINT I,J,ZMNR,ZMNI
560 GOTO 600
570 K1=FNINDX(I-1,J-1,N)
580 ZR(K)=ZR(K1)
590 ZI(K)=ZI(K1)
600 NEXT J
610 NEXT I
620 REM COMPUTE VOLTAGE VECTOR
630 FOR I=1 TO N
640 V(I)=0
650 NEXT I
660 V(NF)=1
670 FOR I=1 TO N
680 CR(I)=V(I)
690 CI(I)=0
700 NEXT I
710 REM SOLVE ZI=V
720 GOSUB 960
730 ZINR=FNDIVR(1,0,CR(NF),CI(NF))
740 ZINI=FNDIVI(1,0,CR(NF),CI(NF))
750 REM PRINT CURRENT
760 PRINT "MODE # CURRENT(RE,IM)"
770 FOR I=1 TO N
780 PRINT USING " ## ##.#### ##.####";I,CR(I),CI(I)
790 NEXT I
800 PRINT
810 PRINT USING "ISOLATED DIPOLE IMPEDANCE=####.## #####.## ohms";ZINR,ZINI
820 PRINT USING "T-LINE CHARACTERISTIC IMPEDANCE=####.# ohms";Z0
830 PRINT USING "TRANSFORMATION RATIO=###.###";(1+AA)^2
840 X1=2*(1+AA)^2*ZINI*(-ZF)
850 Y1=2*(1+AA)^2*ZINR*ZF
860 X2=(1+AA)^2*ZINR
870 Y2=(1+AA)^2*ZINI+2*ZF
880 ZINR=FNDIVR(X1,Y1,X2,Y2)
890 ZINI=FNDIVI(X1,Y1,X2,Y2)
900 PRINT USING "FOLDED DIPOLE INPUT IMPEDANCE=####.# ####.# ohms";ZINR,ZINI
910 PRINT
920 COLOR 4,0
930 INPUT "CONTINUE(Y,N)";IS$
940 IF IS$="N" THEN GOTO 2340
950 GOTO 100
960 REM CHOLESKY LINEAR EQUATION SOLUTION
970 PHS=0
980 IF ZR(1)<>0 THEN PHS=ATN(ZI(1)/ZR(1))/2
990 MAG=SQR(FNCABS(ZR(1),ZI(1)))
1000 ZR(1)=MAG*COS(PHS)
1010 ZI(1)=MAG*SIN(PHS)
1020 FOR K=2 TO N
1030 ZINR=FNDIVR(ZR(K),ZI(K),ZR(1),ZI(1))
1040 ZINI=FNDIVI(ZR(K),ZI(K),ZR(1),ZI(1))
1050 ZR(K)=ZINR
1060 ZI(K)=ZINI
1070 NEXT K
1080 FOR I=2 TO N
1090 IMO=I-1
1100 IPO=I+1
1110 ID=(I-1)*N-(I*I-I)/2
1120 II=ID+I
1130 FOR L=1 TO IMO
1140 LI=FNINDX(L,I,N)
1150 ZINR=ZR(II)-ZR(LI)*ZR(LI)+ZI(LI)*ZI(LI)
1160 ZINI=ZI(II)-2*ZR(LI)*ZI(LI)
1170 ZR(II)=ZINR
1180 ZI(II)=ZINI
1190 NEXT L
1200 PHS=0
1210 IF ZR(II)<>0 THEN PHS=ATN(ZI(II)/ZR(II))/2
1220 MAG=SQR(FNCABS(ZR(II),ZI(II)))
1230 ZR(II)=MAG*COS(PHS)
1240 ZI(II)=MAG*SIN(PHS)
1250 IF IPO>N THEN GOTO 1420
1260 FOR J=IPO TO N
1270 IJ=ID+J
1280 FOR M=1 TO IMO
1290 MD=(M-1)*N-(M*M-M)/2
1300 MI=MD+I
1310 MJ=MD+J
1320 ZINR=ZR(IJ)-ZR(MJ)*ZR(MI)+ZI(MJ)*ZI(MI)
1330 ZINI=ZI(IJ)-ZR(MJ)*ZI(MI)-ZI(MJ)*ZR(MI)
1340 ZR(IJ)=ZINR
1350 ZI(IJ)=ZINI
1360 NEXT M
1370 ZINR=FNDIVR(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
1380 ZINI=FNDIVI(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
1390 ZR(IJ)=ZINR
1400 ZI(IJ)=ZINI
1410 NEXT J
1420 NEXT I
1430 ZINR=FNDIVR(CR(1),CI(1),ZR(1),ZI(1))
1440 ZINI=FNDIVI(CR(1),CI(1),ZR(1),ZI(1))
1450 CR(1)=ZINR
1460 CI(1)=ZINI
1470 FOR I=2 TO N
1480 IMO=I-1
1490 FOR L=1 TO IMO
1500 LI=FNINDX(L,I,N)
1510 ZINR=CR(I)-ZR(LI)*CR(L)+ZI(LI)*CI(L)
1520 ZINI=CI(I)-ZR(LI)*CI(L)-ZI(LI)*CR(L)
1530 CR(I)=ZINR
1540 CI(I)=ZINI
1550 NEXT L
1560 II=FNINDX(I,I,N)
1570 ZINR=FNDIVR(CR(I),CI(I),ZR(II),ZI(II))
1580 ZINI=FNDIVI(CR(I),CI(I),ZR(II),ZI(II))
1590 CR(I)=ZINR
1600 CI(I)=ZINI
1610 NEXT I
1620 NN=((N+1)*N)/2
1630 ZINR=FNDIVR(CR(N),CI(N),ZR(NN),ZI(NN))
1640 ZINI=FNDIVI(CR(N),CI(N),ZR(NN),ZI(NN))
1650 CR(N)=ZINR
1660 CI(N)=ZINI
1670 NMO=N-1
1680 FOR I=1 TO NMO
1690 K=N-I
1700 KPO=K+1
1710 KD=(K-1)*N-(K*K-K)/2
1720 FOR L=KPO TO N
1730 KL=KD+L
1740 ZINR=CR(K)-ZR(KL)*CR(L)+ZI(KL)*CI(L)
1750 ZINI=CI(K)-ZR(KL)*CI(L)-ZI(KL)*CR(L)
1760 CR(K)=ZINR
1770 CI(K)=ZINI
1780 NEXT L
1790 KK=KD+K
1800 ZINR=FNDIVR(CR(K),CI(K),ZR(KK),ZI(KK))
1810 ZINI=FNDIVI(CR(K),CI(K),ZR(KK),ZI(KK))
1820 CR(K)=ZINR
1830 CI(K)=ZINI
1840 NEXT I
1850 RETURN
1860 REM SUBROUTINE TO COMPUTE THE SINE AND COSINE INTEGRALS
1870 X2=X*X
1880 X4=X2*X2
1890 IF X>=1 THEN GOTO 1970
1900 X6=X2*X4
1910 X3=X*X2
1920 X5=X3*X2
1930 X7=X5*X2
1940 SI=X-X3/18+X5/600-X7/35280!
1950 CI=.57722+LOG(X)-X2/4+X4/96-X6/4320
1960 RETURN
1970 SX=SIN(X)
1980 CX=COS(X)
1990 FX=(X4+7.24116*X2+2.46394)/X
2000 FX=FX/(X4+9.068579*X2+7.15743)
2010 GX=(X4+7.54748*X2+1.56407)/X2
2020 GX=GX/(X4+12.72368*X2+15.72361)
2030 SI=1.57079-FX*CX-GX*SX
2040 CI=FX*SX-GX*CX
2050 RETURN
2060 REM COMPUTE ZMN TERMS
2070 A(1)=1
2080 A(5)=1
2090 A(2)=-4*CKD
2100 A(4)=A(2)
2110 A(3)=2+4*CKD*CKD
2120 ZMNR=0
2130 ZMNI=0
2140 FOR MM=-2 TO 2
2150 FOR NN=-1 TO 1 STEP 2
2160 TT=X0+MM*D
2170 BET=AM
2180 IF ABSYYAM THEN GOTO 2210
2190 BET=SQR(AM*AM+TT*TT)-NN*TT
2200 IF BET<AM/10 THEN BET=AM*AM/(2*ABS(TT))-AM^4/(8*ABS(TT)^3)
2210 X=BET*XK0
2220 ALP=XK0*NN*TT
2230 CALP=COS(ALP)
2240 SALP=SIN(ALP)
2250 GOSUB 1860
2260 ZMNR=ZMNR+A(MM+3)*(CALP*CI-SALP*SI)
2270 ZMNI=ZMNI-A(MM+3)*(SALP*CI+CALP*SI)
2280 NEXT NN
2290 NEXT MM
2300 SKDS=SKD*SKD
2310 ZMNR=ZMNR*15/SKDS
2320 ZMNI=ZMNI*15/SKDS
2330 RETURN
2340 COLOR 7,0
2350 KEY ON
2360 END