C TOAMG.F - CONVERT BEACONSFIELD LOCATED DATA TO AMG C INTEGER*4 LINE,FLT,DATE,FID,ALT,REC,TCC,KC,UC,THC REAL*8 TIME,LONG,LAT,MAGR,EAST,NORTH CHARACTER*30 TEXT C OPEN(UNIT=3,FILE='beaconsfield.ldt',READONLY) OPEN(UNIT=4,FILE='bfield.amg') C 10 READ(3,100,END=20) LINE,FLT,DATE,FID,TIME,ALT,REC, . LONG,LAT,MAGR,TEXT,TCC,KC,UC,THC 100 FORMAT(I5,I4,I6,I6,F8.1,I4,I1,F9.5,F9.5,F8.2,17X, . A30,1X,I6,1X,I5,1X,I5,1X,I5) IF (REC .EQ. 0) GOTO 10 C NOT RECOVERED AT START OR END OF LINE IF (ALT .EQ. 999) GOTO 10 C ALSO SOME WITH DUMMY ALTITUDE - ALSO DUMMY MAGS + RADS LAT=DABS(LAT) CALL GEOUTM(LAT,LONG,EAST,NORTH) WRITE(4,200) LINE,FLT,DATE,FID,TIME,ALT,REC,EAST, . NORTH,MAGR,TEXT,TCC,KC,UC,THC 200 FORMAT(I5,I3,I6,I6,F8.1,I4,I1,F8.1,F9.1, . F8.2,A30,I6,I5,I5,I5) GOTO 10 C 20 CONTINUE END CTITLE GEOUTM GRID CONVERSION SUBROUTINE GEOUTM(LAT,LONG,EAST,YNORTH) C BASED ON THE TAS LANDS DEPT PROGRAM UTM C THE EQUATIONS USED ARE FROM TM PROJECTION TABLES 1944. C THE ORIGINAL FORMULAE AGREE WITH REDFEARNS FOR THE 1ST. AND C 2ND. TERMS BUT DIFFER IN THE 3RD. TERM. HOWEVER TO IMPROVE C ACCURACY THE FORMULA FOR NORTHING HAS BEEN CHANGED TO AGREE C WITH REDFEARNS IN THE 3RD. TERM (Q3) C CONVERTS FROM GEOGRAPHIC TO UTM COORDINATES C INPUT IS LATDEG.GGGGGG C LONDEG.GGGGGG C OUTPUT IS EAST COORDINATE,NORTH COORDINATE (DOUBLE PRECISION,METRES) DOUBLE PRECISION DEG,S,EAST,YNORTH,SIND,COSD,TAND,C,R,P,PC,PCC, . P1,P2,Q1,Q2,Q3,Q4,Q5,Q6,LAT,LONG DEG=LAT S=111133.34878D00*DEG-16038.9546D00*DSIN(0.034906585D00*DEG)+ . 16.8331D00*DSIN(0.0698132D00*DEG)-0.0218D00*DSIN(0.10472D00*DEG) DEG=0.01745329252D00*DEG SIND=DSIN(DEG) COSD=DCOS(DEG) TAND=(SIND/COSD)**2 C=1.0D00-0.6694541855D-2*SIND**2 R=6335461.141D00/C**1.5 P=6378160.0D00/DSQRT(C) PC=P*COSD PCC=PC*COSD**2 P1=(LONG*3600.0D00 . -529200.0D00)*1.D-4 P2=P1**2 Q1=1.D+7-0.9996D00*S Q2=PC*SIND*0.117475144D-2 Q3=PCC*SIND*(4.0D00*(P/R)**2+P/R-TAND)*0.230099D-6 Q4=PC*0.48461975563D-1 Q5=PCC*(P/R-TAND)*0.18984519D-4 Q6=PCC*COSD*COSD*(5.0D00-TAND*(18.0D00-TAND))*0.22311D-8 EAST=500000.0D00+P1*(Q4+P2*(Q5+P2*Q6)) YNORTH=Q1-P2*(Q2+P2*Q3) RETURN END C TITLE=XIT.F - USED TO GIVE THE TASK ELAPSED AND USER TIME C AND THEN STOP THE PROGRAM SUBROUTINE XIT REAL ET,CPUTIME(2),CPUSECS INTEGER ETHOURS,ETMINS,CPUHOURS,CPUMINS ETHOURS=0 ETMINS=0 CPUHOURS=0 CPUMINS=0 ET=ETIME(CPUTIME) C CALL THE SYSTEM ROUTINE AND GET HE ELAPSED TIME CPUSECS=CPUTIME(1) ET=CPUTIME(1)+CPUTIME(2) IF (ET .GE. 60.0) THEN C ELAPSED TIME GREATER THAN 60 SECS ETMINS=IFIX(ET/60.0) ET=ET-(ETMINS*60.0) C GET THE REMAINDER SECONDS IF (ETMINS .GT. 59) THEN C MORE THAN 59 MINUTES - CONVERT TO HOURS ETHOURS=ETMINS/60 ETMINS=ETMINS-(ETHOURS*60) C GET THE REMAINDER MINUTES ENDIF ENDIF C IF (CPUSECS .GE. 60.0) THEN C CPUTIME GREATER THAN 60 SECS CPUMINS=IFIX(CPUSECS/60.0) CPUSECS=CPUSECS-(CPUMINS*60) C GET THE REMAINDER SECONDS IF (CPUMINS .GT. 59) THEN C MORTE THAN 59 MINUTES - CONVERT TO HOURS CPUHOURS=CPUMINS/60 CPUMINS=CPUMINS-(CPUHOURS*60) C GET THE REMAINDER MINUTES ENDIF ENDIF WRITE(0,100) ETHOURS,ETMINS,ET,CPUHOURS,CPUMINS,CPUSECS 100 FORMAT(' ELAPSED TIME',I4,':',I2,':',F6.3, . 3X,'PROCESSOR',I4,':',I2,':',F6.3) STOP END