C NCLFORTSTART SUBROUTINE MYINTERP(V3D,V2D,Z,SFC,NX,NY,NZ) IMPLICIT NONE INTEGER NX,NY,NZ DOUBLE PRECISION V3D(NX,NY,NZ),V2D(NX,NY) ! This used to be DOUBLE PRECISION DOUBLE PRECISION Z(NX,NY,NZ) DOUBLE PRECISION SFC(NX,NY) C NCLEND INTEGER I,J,KP,IP,IM LOGICAL INTERP DOUBLE PRECISION HEIGHT,W1,W2 c does vertical coordinate increase or decrease with increasing k? c set offset appropriately IP = 0 IM = 1 IF (Z(1,1,1).GT.Z(1,1,NZ)) THEN IP = 1 IM = 0 END IF DO I = 1,NX DO J = 1,NY C Initialize to missing. Was initially hard-coded to -999999. INTERP = .false. KP = NZ DO WHILE ((.NOT.INTERP) .AND. (KP.GE.2)) HEIGHT=SFC(I,J) IF (((Z(I,J,KP-IM).LE.HEIGHT).AND. (Z(I,J, + KP-IP).GT.HEIGHT))) THEN W2 = (HEIGHT-Z(I,J,KP-IM))/ + (Z(I,J,KP-IP)-Z(I,J,KP-IM)) W1 = 1.D0 - W2 V2D(I,J) = W1*V3D(I,J,KP-IM) + W2*V3D(I,J,KP-IP) INTERP = .true. END IF KP = KP - 1 END DO END DO END DO RETURN END