SUBROUTINE W3FB01(XI,XJ,XMESHL,ALAT,ALONG) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: W3FB01 I,J TO LATITUDE, LONGITUDE C AUTHOR: HEERMANN,A. ORG: W345 DATE: 69-08-01 C C ABSTRACT: CONVERTS THE COORDINATES OF A LOCATION FROM THE GRID(I,J) C COORDINATE SYSTEM OVERLAID ON THE POLAR STEREOGRAPHIC MAP PRO- C JECTION TRUE AT 60 N TO THE NATURAL COORDINATE SYSTEM OF LATITUDE C /LONGITUDE ON THE EARTH. A PREFERABLE MORE FLEXIBLE SUBROUTINE TO C USE IS W3FB05. W3FB01 IS THE REVERSE OF W3FB00. C C PROGRAM HISTORY LOG: C 69-08-01 A. HEERMANN C 90-08-31 R.E.JONES CHANGE TO CRAY CFT77 FORTRAN C C USAGE: CALL W3FB01 (XI, XJ, XMESHL, ALAT, ALONG) C C INPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C XI ARG LIST I OF THE POINT RELATIVE TO NORTH POLE C XJ ARG LIST J OF THE POINT RELATIVE TO NORTH POLE C XMESHL ARG LIST MESH LENGTH OF GRID IN KILOMETERS AT 60N C C OUTPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C ALAT ARG LIST LATITUDE IN DEG. (-20.0(S. HEMIS) < ALAT < 90.0) C ALONG ARG LIST WEST LONGITUDE IN DEGREES C C SUBPROGRAMS CALLED: C NAMES LIBRARY C ------------------------------------------------------- -------- C ASIN ATAN2 SYSLIB C C REMARKS: THE GRID USED IN THIS SUBROUTINE HAS ITS ORIGIN (I=0,J=0) C AT THE NORTH POLE, SO IF THE USER'S GRID HAS ITS ORIGIN AT A C POINT OTHER THAN THE NORTH POLE, A TRANSLATION IS REQUIRED TO C GET I AND J FOR INPUT INTO W3FB01. THE SUBROUTINE GRID IS C ORIENTED SO THAT LONGITUDE 80W IS PARALLEL TO GRIDLINES OF C I=CONSTANT. THE EARTH'S RADIUS IS TAKEN TO BE 6371.2 KM. C ALL PARAMETERS IN THE CALL STATEMENT MUST BE REAL C C ATTRIBUTES: C LANGUAGE: CRAY CFT77 FORTRAN C MACHINE: CRAY Y-MP8/832 C C$$$ C DATA DEGPRD/57.2957795/ DATA EARTHR/6371.2/ C GI2 = (1.86603 * EARTHR) / XMESHL GI2 = GI2 * GI2 R2 = XI * XI + XJ * XJ IF (R2.NE.0.0) GO TO 100 ALONG = 0.0 ALAT = 90.0 RETURN C 100 CONTINUE ALAT = ASIN((GI2-R2) / (GI2+R2)) * DEGPRD XLONG = DEGPRD * ATAN2(XJ,XI) IF (XLONG) 200,300,300 C 200 CONTINUE ALONG = -10.0 - XLONG IF (ALONG.LT.0.0) ALONG = ALONG + 360.0 GO TO 400 C 300 CONTINUE ALONG = 350.0 - XLONG C 400 CONTINUE RETURN END