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![]()