SUBROUTINE W3FB05(XI,XJ,XMESHL,ORIENT,ALAT,ALONG) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: W3FB05 GRID COORDINATES TO LATITUDE, LONGITUDE C AUTHOR: JONES,R.E. ORG: W345 DATE: 86-07-17 C C ABSTRACT: CONVERTS THE COORDINATES OF A LOCATION FROM THE GRID(I,J) C COORDINATE SYSTEM OVERLAID ON THE POLAR STEREOGRAPHIC MAP PROJEC- C TION TRUE AT 60 DEGREES N OR S LATITUDE TO THE NATURAL COORDINATE C SYSTEM OF LATITUDE/LONGITUDE ON THE EARTH. W3FB05 IS THE REVERSE C OF W3FB04. C C PROGRAM HISTORY LOG: C 86-07-17 R.E.JONES C 89-11-01 R.E.JONES CHANGE TO CRAY CFT77 FORTRAN C C USAGE: CALL W3FB05 (XI, XJ, XMESHL, ORIENT, 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 THE NORTH OR S. POLE C XJ ARG LIST J OF THE POINT RELATIVE TO THE NORTH OR S. POLE C XMESHL ARG LIST MESH LENGTH OF GRID IN KM AT 60 DEGREES(<0 IF SH) C (190.5 LFM GRID, 381.0 NH PE GRID,-381.0 SH PE GRID) C ORIENT ARG LIST ORIENTATION WEST LONGITUDE OF THE GRID C (105.0 LFM GRID, 80.0 NH PE GRID, 260.0 SH PE GRID) C C OUTPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C ALAT ARG LIST LATITUDE IN DEGREES (<0 IF SH) C ALONG ARG LIST WEST LONGITUDE IN DEGREES C C SUBPROGRAMS CALLED: C NAMES LIBRARY C ------------------------------------------------------- -------- C ASIN ATAN2 SYSLIB C C REMARKS: ALL PARAMETERS IN THE CALLING STATEMENT MUST BE C REAL. THE RANGE OF ALLOWABLE LATITUDES IS FROM A POLE TO C 30 DEGREES INTO THE OPPOSITE HEMISPHERE. C THE GRID USED IN THIS SUBROUTINE HAS ITS ORIGIN (I=0,J=0) C AT THE POLE, SO IF THE USER'S GRID HAS ITS ORIGIN AT A POINT C OTHER THAN A POLE, A TRANSLATION IS REQUIRED TO GET I AND J FOR C INPUT INTO W3FB05. THE SUBROUTINE GRID IS ORIENTED SO THAT C GRIDLINES OF I=CONSTANT ARE PARALLEL TO A WEST LONGITUDE SUP- C PLIED BY THE USER. THE EARTH'S RADIUS IS TAKEN TO BE 6371.2 KM. C C WARNING: THIS CODE WILL NOT VECTORIZE, IT IS NORMALY USED IN A C DOUBLE DO LOOP WITH W3FT01, W3FT00, ETC. TO VECTORIZE IT, C PUT IT IN LINE, PUT W3FT01, W3FT00, ETC. IN LINE. C 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))**2 R2 = XI * XI + XJ * XJ C IF (R2.EQ.0.0) THEN ALONG = 0.0 ALAT = 90.0 IF (XMESHL.LT.0.0) ALAT = -ALAT RETURN ELSE ALAT = ASIN((GI2 - R2) / (GI2 + R2)) * DEGPRD ANGLE = DEGPRD * ATAN2(XJ,XI) IF (ANGLE.LT.0.0) ANGLE = ANGLE + 360.0 ENDIF C IF (XMESHL.GE.0.0) THEN ALONG = 270.0 + ORIENT - ANGLE C ELSE C ALONG = ANGLE + ORIENT - 270.0 ALAT = -(ALAT) ENDIF C IF (ALONG.LT.0.0) ALONG = ALONG + 360.0 IF (ALONG.GE.360.0) ALONG = ALONG - 360.0 C RETURN C END