SUBROUTINE W3FA03(PRESS,HEIGHT,TEMP,THETA)
C$$$  SUBPROGRAM DOCUMENTATION BLOCK
C                .      .    .                                       .
C SUBPROGRAM:    W3FA03      COMPUTE STANDARD HEIGHT, TEMP, AND POT TEMP
C   PRGMMR: KEYSER           ORG: W/NMC22    DATE: 92-06-29
C
C ABSTRACT: COMPUTES THE STANDARD HEIGHT, TEMPERATURE, AND POTENTIAL
C   TEMPERATURE GIVEN THE PRESSURE IN MILLIBARS ( > 8.68 MB ).  FOR
C   HEIGHT AND TEMPERATURE THE RESULTS DUPLICATE THE VALUES IN THE
C   U.S. STANDARD ATMOSPHERE (L962), WHICH IS THE ICAO STANDARD
C   ATMOSPHERE TO 54.7487 MB (20 KM) AND THE PROPOSED EXTENSION TO
C   8.68 MB (32 KM).  FOR POTENTIAL TEMPERATURE A VALUE OF  2/7  IS
C   USED FOR  RD/CP.
C
C PROGRAM HISTORY LOG:
C   74-06-01  J. MCDONELL W345     -- ORIGINAL AUTHOR
C   84-06-01  R.E.JONES W342       -- CHANGE TO IBM VS FORTRAN
C   92-06-29  D. A. KEYSER W/NMC22 -- CONVERT TO CRAY CFT77 FORTRAN
C
C USAGE:    CALL W3FA03(PRESS,HEIGHT,TEMP,THETA)
C   INPUT ARGUMENT LIST:
C     PRESS    - PRESSURE IN MILLIBARS
C
C   OUTPUT ARGUMENT LIST:
C     HEIGHT   - HEIGHT IN METERS
C     TEMP     - TEMPERATURE IN DEGREES KELVIN
C     THETA    - POTENTIAL TEMPERATURE IN DEGREES KELVIN
C
C   SUBPROGRAMS CALLED:
C     LIBRARY:
C       CRAY     - ALOG
C
C
C REMARKS: NOT VALID FOR PRESSURES LESS THAN 8.68 MILLIBARS, DECLARE
C   ALL PARAMETERS AS TYPE REAL.
C
C ATTRIBUTES:
C   LANGUAGE: CRAY CFT77 FORTRAN
C   MACHINE:  CRAY Y-MP8/832
C
C$$$
C
      REAL  M0
C
      SAVE
C
      DATA  G/9.80665/,RSTAR/8314.32/,M0/28.9644/,PISO/54.7487/,
     $ ZISO/20000./,SALP/-.0010/,PZERO/1013.25/,T0/288.15/,ALP/.0065/,
     $ PTROP/226.321/,TSTR/216.65/
C
      ROVCP = 2.0/7.0
      R     = RSTAR/M0
      ROVG  = R/G
      FKT   = ROVG * TSTR
      AR    = ALP  * ROVG
      PP0   = PZERO**AR
      IF(PRESS.LT.PISO)   GO TO 100
      IF(PRESS.GT.PTROP)  GO TO 200
C
C     COMPUTE ISOTHERMAL CASES
C
      HEIGHT = 11000.0 + (FKT * ALOG(PTROP/PRESS))
      TEMP = TSTR
      GO TO 300
C
C     COMPUTE LAPSE RATE = -.0010 CASES
C
 100  CONTINUE
      AR     = SALP * ROVG
      PP0    = PISO**AR
      HEIGHT = ((TSTR/(PP0 * SALP )) * (PP0-(PRESS ** AR))) + ZISO
      TEMP   = TSTR - ((HEIGHT - ZISO) * SALP)
      GO TO 300
C
 200  CONTINUE
      HEIGHT = (T0/(PP0 * ALP)) * (PP0 - (PRESS ** AR))
      TEMP   = T0 - (HEIGHT * ALP)
C
 300  CONTINUE
      THETA  = TEMP * ((1000./PRESS)**ROVCP)
      RETURN
      END