SUBROUTINE CALDWP(P1D,Q1D,TDWP,T1D) !$$$ SUBPROGRAM DOCUMENTATION BLOCK ! . . . ! SUBPROGRAM: CALDWP COMPUTES ! PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-22 ! ! ABSTRACT: COMPUTES DEWPOINT FROM P, T, AND Q ! . ! ! PROGRAM HISTORY LOG: ! 92-12-22 RUSS TREADON ! 93-10-04 RUSS TREADON - ADDED CHECK TO BOUND DEWPOINT ! TEMPERATURE TO NOT EXCEED THE ! AMBIENT TEMPERATURE. ! 98-06-08 T BLACK - CONVERSION FROM 1-D TO 2-D ! 00-01-04 JIM TUCCILLO - MPI VERSION ! ! USAGE: CALL CALDWP(P1D,Q1D,TDWP,T1D) ! INPUT ARGUMENT LIST: ! P1D - PRESSURE (PA) ! Q1D - SPECIFIC HUMIDITY (KG/KG) ! T1D - TEMPERATURE (K) ! ! OUTPUT ARGUMENT LIST: ! TDWP - DEWPOINT TEMPERATURE (K) ! ! OUTPUT FILES: ! NONE ! ! SUBPROGRAMS CALLED: ! UTILITIES: ! DEWPOINT - COMPUTES DEWPOINT GIVEN VAPOR PRESSURE. ! LIBRARY: ! NONE ! ! ATTRIBUTES: ! LANGUAGE: FORTRAN 90 ! MACHINE : CRAY C-90 !$$$ ! ! ! SET PARAMETERS. use params_mod, only: eps, oneps, d001, h1m12 use ctlblk_mod, only: jsta, jend, im !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! ! DECLARE VARIABLES. ! REAL,dimension(IM,jsta:jend),intent(in) :: P1D,Q1D,T1D REAL,dimension(IM,jsta:jend),intent(inout) :: TDWP REAL EVP(IM,jsta:jend) integer I,J ! !**************************************************************************** ! START CALDWP HERE. ! ! COMPUTE VAPOR PRESSURE. CONVERT TO CENITBARS. ! !$omp parallel do private(i,j) DO J=JSTA,JEND DO I=1,IM EVP(I,J) = P1D(I,J)*Q1D(I,J)/(EPS+ONEPS*Q1D(I,J)) EVP(I,J) = MAX(H1M12,EVP(I,J)*D001) ENDDO ENDDO ! ! COMPUTE DEWPOINT TEMPERATURE. ! CALL DEWPOINT(EVP,TDWP) ! ! ENSURE DEWPOINT TEMPERATURE DOES NOT EXCEED AMBIENT TEMPERATURE. ! !$omp parallel do private(i,j) DO J=JSTA,JEND DO I=1,IM TDWP(I,J) = min(TDWP(I,J),T1D(I,J)) ENDDO ENDDO ! ! END OF ROUTINE. ! RETURN END