SUBROUTINE W3FC07(FFID, FFJD, FGU, FGV, FU, FV) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C AJ 11/14/2017 coped this routine from /nwprod2/lib/w3emc/v2.2.0/src/libsrc/w3fc07.f . . . . C SUBPROGRAM: W3FC07 GRID U-V TO EARTH U-V IN NORTH HEM. C PRGMMR: CHASE ORG: NMC421 DATE:88-10-26 C C ABSTRACT: GIVEN THE GRID-ORIENTED WIND COMPONENTS ON A NORTHERN C HEMISPHERE POLAR STEREOGRAPHIC GRID POINT, COMPUTE THE EARTH- C ORIENTED WIND COMPONENTS AT THAT POINT. IF THE INPUT WINDS C ARE AT THE NORTH POLE, THE OUTPUT COMPONENTS WILL BE MADE C CONSISTENT WITH THE WMO STANDARDS FOR REPORTING WINDS AT THE C NORTH POLE. (SEE OFFICE NOTE 241 FOR WMO DEFINITION.) C C PROGRAM HISTORY LOG: C 81-12-30 STACKPOLE, J. D. C 88-10-13 CHASE, P. ALLOW INPUT AND OUTPUT TO BE THE SAME C 91-03-06 R.E.JONES CHANGE TO CRAY CFT77 FORTRAN C C USAGE: CALL W3FC07 (FFID, FFJD, FGU, FGV, FU, FV) C C INPUT ARGUMENT LIST: C FFID - REAL I-DISPLACEMENT FROM POINT TO NORTH POLE C FFJD - REAL J-DISPLACEMENT FROM POINT TO NORTH POLE C FGU - REAL GRID-ORIENTED U-COMPONENT C FGV - REAL GRID-ORIENTED V-COMPONENT C C OUTPUT ARGUMENT LIST: C FU - REAL EARTH-ORIENTED U-COMPONENT, POSITIVE FROM WEST C MAY REFERENCE THE SAME LOCATION AS FGU. C FV - REAL EARTH-ORIENTED V-COMPONENT, POSITIVE FROM SOUTH C MAY REFERENCE THE SAME LOCATION AS FGV. C C SUBPROGRAMS CALLED: C LIBRARY: C COMMON - SQRT C C REMARKS: CALCULATE FFID AND FFJD AS FOLLOWS... C FFID = REAL(IP - I) C FFJD = REAL(JP - J) C WHERE (IP,JP) IS THE GRID COORDINATES OF THE NORTH POLE AND C (I,J) IS THE GRID COORDINATES OF THE POINT WHERE FGU AND FGV C OCCUR. C SEE W3FC11 FOR A SOUTHERN HEMISPHERE COMPANION SUBROUTINE. C C ATTRIBUTES: C LANGUAGE: CRAY CFT77 FORTRAN C MACHINE: CRAY C916-128, CRAY Y-MP8/864, CRAY Y-MP EL2/256 C C$$$ C SAVE C DATA COS80 / 0.1736482 / DATA SIN80 / 0.9848078 / C COS80 AND SIN80 ARE FOR WIND AT POLE C (USED FOR CO-ORDINATE ROTATION TO EARTH ORIENTATION) DFP = SQRT(FFID * FFID + FFJD * FFJD) IF (DFP .EQ. 0.0) THEN XFU = -(FGU * COS80 + FGV * SIN80) FV = -(FGV * COS80 - FGU * SIN80) ELSE XFU = (FGU * FFJD - FGV * FFID) / DFP FV = (FGU * FFID + FGV * FFJD) / DFP ENDIF FU = XFU RETURN END