100 'opening output files
110 OPEN "a:\infinity\pa1.txt" FOR OUTPUT AS #1
120 'OPEN "a:\infinity\pa1y.txt" FOR OUTPUT AS #2
130 'parameter
140 NUM = 7 : MC = 101
150 H1 = 10.67 : H2 = 20.12 : H3 = 29.57 : H4 = 37.19 : I0 = 1000
160 PI = 3.14159265359# : RADA = 0 : RADB = -(2/3)*PI : RADC = (2/3)*PI : MICRO = (4*PI)/10
170 DIM XA(NUM),YA(NUM),ICR(NUM),ICI(NUM),ABX(MC),ABY(MC)
180 '
190 'position computation
200 FOR I = 1 TO NUM
210 ON I GOTO 220, 230, 240, 250, 270, 280, 290
220 XA(I) = 4.57 : YA(I) = H1 : RAD = RADA : GOTO 300
230 XA(I) = 7.62 : YA(I) = H2 : RAD = RADB : GOTO 300
240 XA(I) = 4.57 : YA(I) = H3 : RAD = RADC : GOTO 300
250 XA(I) = 0! : YA(I) = H4 : RAD = 0 : GOTO 300
270 XA(I) = -4.57 : YA(I) = H3 : RAD = RADA : GOTO 300
280 XA(I) = -7.62 : YA(I) = H2 : RAD = RADB : GOTO 300
290 XA(I) = -4.57 : YA(I) = H1 : RAD = RADC
300 ICR(I) = I0 * COS(RAD) : ICI(I) = I0 * SIN(RAD)
310 IF I = 4 THEN ICR(I) = 0 : ICI(I) = 0
320 NEXT I
330 '
340 'magnetic field computation
350 FOR IX = 1 TO MC
360 XX = (IX-1)*100/100-50 : YY = 1
370 '
380 'initializing magnetic field summation for x-axis and y-axis
390 BXSUMR = 0 : BXSUMI = 0
400 BYSUMR = 0 : BYSUMI = 0
410 FOR I = 1 TO NUM
420 D = SQR((XX-XA(I))^2+(YA(I)-YY)^2)
430 BR = (MICRO/2/PI/D)*ICR(I) : BI = (MICRO/2/PI/D)*ICI(I)
440 BXR = (BR*(YA(I)-YY))/D : BXI = (BI*(YA(I)-YY))/D
450 BYR = (BR*(XX-XA(I)))/D : BYI = (BI*(XX-XA(I)))/D
460 BXSUMR = BXSUMR + BXR : BYSUMR = BYSUMR + BYR
470 BXSUMI = BXSUMI + BXI : BYSUMI = BYSUMI + BYI
480 NEXT I
490 ABX[IX] = SQR(BXSUMR^2 + BXSUMI^2) : ABY[IX] = SQR(BYSUMR^2 + BYSUMI^2) : RXY = ABX[IX]/ABY[IX]
500 ' bxr, bxi, byr, byi are already take cared of.
510 IF BXSUMR = 0 THEN THX = 90 ELSE THX = (ATN(BXSUMI/BXSUMR))*(180/PI)
520 IF BYSUMR = 0 THEN THY = 90 ELSE THY = (ATN(BYSUMI/BYSUMR))*(180/PI)
530 '
540 'limiting the angle to the range 0 to 360 degrees
550 IF BXSUMR > 0 AND BXSUMI > 0 THEN THX = THX
560 IF BXSUMR > 0 AND BXSUMI < 0 THEN THX = THX
570 IF BXSUMR > 0 AND BXSUMI = 0 THEN THX = 0
580 IF BXSUMR < 0 AND BXSUMI > 0 THEN THX = THX + 180
590 IF BXSUMR < 0 AND BXSUMI < 0 THEN THX = THX - 180
600 IF BXSUMR < 0 AND BXSUMI = 0 THEN THX = 180
610 IF BXSUMR = 0 AND BXSUMI > 0 THEN THX = 90
620 IF BXSUMR = 0 AND BXSUMI < 0 THEN THX = -90
630 '
640 IF BYSUMR > 0 AND BYSUMI > 0 THEN THY = THY
650 IF BYSUMR > 0 AND BYSUMI < 0 THEN THY = THY
660 IF BYSUMR > 0 AND BYSUMI = 0 THEN THY = 0
670 IF BYSUMR < 0 AND BYSUMI > 0 THEN THY = THY + 180
680 IF BYSUMR < 0 AND BYSUMI < 0 THEN THY = THY - 180
690 IF BYSUMR < 0 AND BYSUMI = 0 THEN THY = 180
700 IF BYSUMR = 0 AND BYSUMI > 0 THEN THY = 90
710 IF BYSUMR = 0 AND BYSUMI < 0 THEN THY = -90
720 '
730 THYX = THY - THX
740 IF THYX > 180 AND THYX <= 360 THEN THYX = THYX - 360
750 IF THYX >= -360 AND THYX < -180 THEN THYX = THYX + 360
760 IF THYX >= -180 AND THYX <= 180 THEN THYX = THYX
770 '
780 'output in [uT/deg] unit
790 PRINT#1, XX, ABX[IX], ABY[IX], THX, THY
800 'PRINT#2, XX, ABY, THY
810 NEXT IX
820 CLOSE#1
830 CLOSE#2
1000 SCREEN 3 : CLS 3
1001 INC = 6
1010 FOR T = 2 TO 101
1020 LINE (((T-1)*INC)+20,350-(ABX[T-1]*25))-((T*INC)+20,350-(ABX[T]*25)),3
1025 LINE (((T-1)*INC)+20,350-(ABY[T-1]*25))-((T*INC)+20,350-(ABY[T]*25)),4
1030 NEXT T




1
Hosted by www.Geocities.ws