C----------------------------------------------------------------------- SUBROUTINE VINTG(IM,IX,KM1,KM2,NT,P1,U1,V1,T1,Q1,P2, & U2,V2,T2,Q2) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: VINTG VERTICALLY INTERPOLATE UPPER-AIR FIELDS C PRGMMR: IREDELL ORG: W/NMC23 DATE: 92-10-31 C C ABSTRACT: VERTICALLY INTERPOLATE UPPER-AIR FIELDS. C WIND, TEMPERATURE, HUMIDITY AND OTHER TRACERS ARE INTERPOLATED. C THE INTERPOLATION IS CUBIC LAGRANGIAN IN LOG PRESSURE C WITH A MONOTONIC CONSTRAINT IN THE CENTER OF THE DOMAIN. C IN THE OUTER INTERVALS IT IS LINEAR IN LOG PRESSURE. C OUTSIDE THE DOMAIN, FIELDS ARE GENERALLY HELD CONSTANT, C EXCEPT FOR TEMPERATURE AND HUMIDITY BELOW THE INPUT DOMAIN, C WHERE THE TEMPERATURE LAPSE RATE IS HELD FIXED AT -6.5 K/KM AND C THE RELATIVE HUMIDITY IS HELD CONSTANT. C C PROGRAM HISTORY LOG: C 91-10-31 MARK IREDELL C C USAGE: CALL VINTG(IM,IX,KM1,KM2,NT,P1,U1,V1,T1,Q1,P2, C & U2,V2,T2,Q2) C INPUT ARGUMENT LIST: C IM INTEGER NUMBER OF POINTS TO COMPUTE C IX INTEGER FIRST DIMENSION C KM1 INTEGER NUMBER OF INPUT LEVELS C KM2 INTEGER NUMBER OF OUTPUT LEVELS C NT INTEGER NUMBER OF TRACERS C P1 REAL (IX,KM1) INPUT PRESSURES C ORDERED FROM BOTTOM TO TOP OF ATMOSPHERE C U1 REAL (IX,KM1) INPUT ZONAL WIND C V1 REAL (IX,KM1) INPUT MERIDIONAL WIND C T1 REAL (IX,KM1) INPUT TEMPERATURE (K) C Q1 REAL (IX,KM1,NT) INPUT TRACERS (HUMIDITY FIRST) C P2 REAL (IX,KM2) OUTPUT PRESSURES C OUTPUT ARGUMENT LIST: C U2 REAL (IX,KM2) OUTPUT ZONAL WIND C V2 REAL (IX,KM2) OUTPUT MERIDIONAL WIND C T2 REAL (IX,KM2) OUTPUT TEMPERATURE (K) C Q2 REAL (IX,KM2,NT) OUTPUT TRACERS (HUMIDITY FIRST) C C SUBPROGRAMS CALLED: C TERP3 CUBICALLY INTERPOLATE IN ONE DIMENSION C C ATTRIBUTES: C LANGUAGE: FORTRAN C C$$$ REAL P1(IX,KM1),U1(IX,KM1),V1(IX,KM1),T1(IX,KM1),Q1(IX,KM1,NT) REAL P2(IX,KM2),U2(IX,KM2),V2(IX,KM2),T2(IX,KM2),Q2(IX,KM2,NT) PARAMETER(DLTDZ=-6.5E-3*287.05/9.8) PARAMETER(DLPVDRT=-2.5E6/461.50) REAL Z1(IM+1,KM1),Z2(IM+1,KM2) REAL C1(IM+1,KM1,3+NT),C2(IM+1,KM2,3+NT) C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C COMPUTE LOG PRESSURE INTERPOLATING COORDINATE C AND COPY INPUT WIND, TEMPERATURE, HUMIDITY AND OTHER TRACERS DO K=1,KM1 DO I=1,IM Z1(I,K)=-LOG(P1(I,K)) C1(I,K,1)=U1(I,K) C1(I,K,2)=V1(I,K) C1(I,K,3)=T1(I,K) C1(I,K,4)=Q1(I,K,1) ENDDO ENDDO DO N=2,NT DO K=1,KM1 DO I=1,IM C1(I,K,3+N)=Q1(I,K,N) ENDDO ENDDO ENDDO DO K=1,KM2 DO I=1,IM Z2(I,K)=-LOG(P2(I,K)) ENDDO ENDDO C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C PERFORM LAGRANGIAN ONE-DIMENSIONAL INTERPOLATION C THAT IS 4TH-ORDER IN INTERIOR, 2ND-ORDER IN OUTSIDE INTERVALS C AND 1ST-ORDER FOR EXTRAPOLATION. CALL TERP3(IM,1,1,1,1,3+NT,(IM+1)*KM1,(IM+1)*KM2, & KM1,IM+1,IM+1,Z1,C1,KM2,IM+1,IM+1,Z2,C2) C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C COPY OUTPUT WIND, TEMPERATURE, HUMIDITY AND OTHER TRACERS C EXCEPT BELOW THE INPUT DOMAIN, LET TEMPERATURE INCREASE WITH A FIXED C LAPSE RATE AND LET THE RELATIVE HUMIDITY REMAIN CONSTANT. DO K=1,KM2 DO I=1,IM U2(I,K)=C2(I,K,1) V2(I,K)=C2(I,K,2) DZ=Z2(I,K)-Z1(I,1) IF(DZ.GE.0) THEN T2(I,K)=C2(I,K,3) Q2(I,K,1)=C2(I,K,4) ELSE T2(I,K)=T1(I,1)*EXP(DLTDZ*DZ) Q2(I,K,1)=Q1(I,1,1)*EXP(DLPVDRT*(1/T2(I,K)-1/T1(I,1))-DZ) ENDIF ENDDO ENDDO DO N=2,NT DO K=1,KM2 DO I=1,IM Q2(I,K,N)=C2(I,K,3+N) ENDDO ENDDO ENDDO END