SUBROUTINE W3FC02(FFID,FFJD,FGU,FGV,DIR,SPD)
C$$$   SUBPROGRAM  DOCUMENTATION  BLOCK
C
C SUBPROGRAM: W3FC02         GRID U,V WIND COMPS. TO DIR. AND SPEED
C   AUTHOR: STACKPOLE, J.    ORG: W324       DATE: 81-12-30
C
C ABSTRACT: GIVEN THE GRID-ORIENTED WIND COMPONENTS ON A NORTHERN
C   HEMISPHERE POLAR STEREOGRAPHIC GRID POINT, COMPUTE THE DIRECTION
C   AND SPEED OF THE WIND AT THAT POINT.  INPUT WINDS AT THE NORTH
C   POLE POINT ARE ASSUMED TO HAVE THEIR COMPONENTS FOLLOW THE WMO
C   STANDARDS FOR REPORTING WINDS AT THE NORTH POLE.
C   (SEE OFFICE NOTE 241 FOR WMO DEFINITION). OUTPUT DIRECTION
C   WILL FOLLOW WMO CONVENTION.
C
C PROGRAM HISTORY LOG:
C   81-12-30  J.STACKPOLE
C   89-01-20  R.E.JONES  CONVERT TO MICROSOFT FORTRAN 4.10
C   90-06-11  R.E.JONES  CONVERT TO SUN FORTRAN 1.3
C   91-03-30  R.E.JONES  CONVERT TO SiliconGRaphics FORTRAN
C   93-03-29  R.E.JONES  ADD SAVE STATEMENT
C   95-08-09  R.E.JONES  COMPILE ON CRAY
C
C USAGE:  CALL W3FC02 (FFID, FFJD, FGU, FGV, DIR, SPD)
C
C   INPUT VARIABLES:
C     NAMES  INTERFACE DESCRIPTION OF VARIABLES AND TYPES
C     ------ --------- -----------------------------------------------
C     FFID   ARG LIST  REAL*4    I(NORTH POLE) - I(POINT)
C     FFJD   ARG LIST  REAL*4    J(NORTH POLE) - J(POINT)
C     FGU    ARG LIST  REAL*4    GRID-ORIENTED U-COMPONENT
C     FGV    ARG LIST  REAL*4    GRID-ORIENTED V-COMPONENT
C
C   OUTPUT VARIABLES:
C     NAMES  INTERFACE DESCRIPTION OF VARIABLES AND TYPES
C     ------ --------- -----------------------------------------------
C     DIR    ARG LIST  REAL*4     WIND DIRECTION, DEGREES
C     SPD    ARG LIST  REAL*4     WIND SPEED
C
C   SUBPROGRAMS CALLED:
C     NAMES                                                   LIBRARY
C     ------------------------------------------------------- --------
C     ABS  ACOS   ATAN2   SQRT                                SYSTEM
C
C WARNING: THIS JOB WILL NOT VECTORIZE ON A CRAY
C
C ATTRIBUTES:
C   LANGUAGE: CRAY CFT77 FORTRAN
C   MACHINE:  CRAY C916/16256, J916/162048
C
C$$$
C
      SAVE
C
      SPD = SQRT(FGU * FGU + FGV * FGV)
      IF (SPD.NE.0.) GO TO 1000
         FGU = 0.
         FGV = 0.
         GO TO 3000
 1000 CONTINUE
      DFP = SQRT(FFID * FFID + FFJD * FFJD)
      IF (DFP.NE.0.) GO TO 2000
         XLAM = ACOS(FGU / SPD)
         XLAM = XLAM * 57.29578
         IF (FGV.LT.0.) DIR = 170. + XLAM
         IF ((FGV.GT.0.).AND.(XLAM.LT.170.)) DIR = 170. - XLAM
         IF ((FGV.GT.0.).AND.(XLAM.GE.170.)) DIR = 530. - XLAM
         IF ((ABS(FGV).LE.0.001).AND.(FGU.GT.0.)) DIR = 170.
         IF ((ABS(FGV).LE.0.001).AND.(FGU.LT.0.)) DIR = 350.
         GO TO 3000
 2000 CONTINUE
         CAL = FFJD / DFP
         SAL = FFID / DFP
         U = FGU * CAL - FGV * SAL
         V = FGU * SAL + FGV * CAL
         DIR = 57.29578 * ATAN2(U,V) + 180.
 3000 CONTINUE
      RETURN
      END