C BMRAMGT.FTN - FOR CONVERTING BMR TASGO MAGS TO AMG REAL*8 EAST,NORTH,LAT,LONG,MAG,TIME INTEGER*4 LINE,FID,DIR,FLT,DATE OPEN(UNIT=4,FILE='surv6304.ldt',READONLY) OPEN(UNIT=8, . FILE='/cdata5/airmag/bmr/offshtasgo/surv6304.amg') 10 READ(4,100,END=20) LINE,FID,DIR,LAT,LONG,MAG,FLT,DATE 100 FORMAT(I8,I7,I5,F15.6,F15.6,F11.2,I4,I7) LAT=DABS(LAT) CALL GEOUTM(LAT,LONG,EAST,NORTH) TIME=FLOAT(FID)/10.0 WRITE(8,302) LINE,FLT,FID,TIME,EAST,NORTH,MAG,DATE 302 FORMAT(I7,I4,I7,F8.1,F9.1,F10.1,F8.2,I7) GOTO 10 20 CLOSE(UNIT=8,STATUS='KEEP') CALL XIT 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