*DECK UTILS C SUBROUTINE SIGTOZ(ZZ,H,T,TLEV,ZLEV,FSM,IM,JM,KB) C------------------------------------------------------------------- C THIS ROUTINE LINERLY INTERPOLATES TLEV AT THE LEVEL, C ZLEV, FROM T LOCATED ON SIGMA LEVELS, ZZ. C ZLEV AND ZZ ARE NEGATIVE QUANTITIES. C A SEARCH IS MADE TO FIND ZZ(K)*H AND ZZ(K+1)*H WHICH C BRACKETS ZLEV; THEN THE INTERPOLATION IS MADE. C IN THE REGION < 0 and > ZZ(1) AND, IN THE REGION, C < ZZ(KB-1) and > -1, DATA IS EXTRAPOLATED. C NOTE THAT A NEW MASK ,FSM, IS CREATED. C C THE VALUES OF H SUPPLIED TO THIS SUBROUTINE SHOULD BE C APPROPRIATE TO THE VARIABLE T. FOR EXAMPLE, IF T IS THE C X-COMPONENT OF VELOCITY, H SHOULD THE AVERAGE OF DEPTH C AT I AND I-1. C------------------------------------------------------------------- DIMENSION ZZ(KB),H(IM,JM),T(IM,JM,KB),TLEV(IM,JM),FSM(IM,JM) TLEV=0. FSM=0. C DO 200 J=2,JM-1 DO 200 I=2,IM-1 IF(ZLEV.GT.ZZ(1)*H(I,J)) THEN K=1 TLEV(I,J)=T(I,J,K)+(ZLEV-ZZ(K)*H(I,J)) 1 *(T(I,J,K+1)-T(I,J,K))/((ZZ(K+1)-ZZ(K))*H(I,J)) GO TO 200 FSM(I,J)=1. ENDIF K=1 100 CONTINUE C C IF(ZLEV.LE.(ZZ(K)*H(I,J)).AND.ZLEV.GE.(ZZ(K+1)*H(I,J))) THEN TLEV(I,J)=T(I,J,K)+(ZLEV-ZZ(K)*H(I,J)) 1 *(T(I,J,K+1)-T(I,J,K))/((ZZ(K+1)-ZZ(K))*H(I,J)) FSM(I,J)=1. GO TO 200 ELSE K=K+1 IF(K.LT.(KB-1)) GO TO 100 ENDIF IF(ZLEV.LE.(ZZ(K)*H(I,J)).AND.ZLEV.GE.(-H(I,J))) THEN TLEV(I,J)=T(I,J,K-1)+(ZLEV-ZZ(K-1)*H(I,J)) 1 *(T(I,J,K)-T(I,J,K-1))/((ZZ(K)-ZZ(K-1))*H(I,J)) FSM(I,J)=1. ENDIF 200 CONTINUE RETURN END C SUBROUTINE SMOOTH(A,B,FSM,IM,JM,NITS) C------------------------------------------------------------------- C THIS ROUTINE SMOOTHS DATA WITH A FIVE POINT LAPLACIAN FILTER. C------------------------------------------------------------------- C A is the array to be smoothed. C B is work space that must be provided through the arguement list. C FSM=1 if element is to include in the smoothing operator. Otherwise, FSM=0. C NITS is the number of smoothing operations. C DIMENSION A(IM,JM),B(IM,JM),FSM(IM,JM) DO 100 N=1,NITS DO 200 J=2,JM-1 DO 200 I=2,IM-1 SMFAC=FSM(I+1,J)+FSM(I,J-1)+FSM(I-1,J)+FSM(I,J+1)+1.S-5 B(I,J)=A(I,J)+(.5S0/SMFAC) 1 *(A(I+1,J)*FSM(I+1,J)+A(I,J-1)*FSM(I,J-1) 2 +A(I-1,J)*FSM(I-1,J)+A(I,J+1)*FSM(I,J+1) 3 -SMFAC*A(I,J)) 200 CONTINUE DO 210 J=1,JM,JM-1 DO 210 I=2,IM-1 SMFAC=FSM(I+1,J)+FSM(I-1,J)+1.S-5 B(I,J)=A(I,J)+(.5S0/SMFAC) 1 *(A(I+1,J)*FSM(I+1,J) 2 +A(I-1,J)*FSM(I-1,J) 3 -SMFAC*A(I,J)) 210 CONTINUE DO 220 J=2,JM-1 DO 220 I=1,IM,IM-1 SMFAC=FSM(I,J-1)+FSM(I,J+1)+1.S-5 B(I,J)=A(I,J)+(.5S0/SMFAC) 1 *(A(I,J-1)*FSM(I,J-1) 2 +A(I,J+1)*FSM(I,J+1) 3 -SMFAC*A(I,J)) 220 CONTINUE A=B*FSM 100 CONTINUE RETURN END *DECK SINTER SUBROUTINE SINTER(X,A,Y,B,M,N) C C A SPECIAL CASE OF INTERP ....NO EXTRAPOLATION BELOW DATA C THIS ROUTINE LINEARLY INTERPOLATES AND EXTRAPOLATES AN ARRAY B C X(M) MUST BE DESCENDING C A(X) GIVEN FUNCTION C B(Y) FOUND BY LINEAR INTERPOLATION AND EXTRAPOLATION C Y(N) THE DESIRED DEPTHS C M THE NUMBER OF POINTS IN X AND A C N THE NUMBER OF POINTS IN Y AND B C HALF PRECISION X(M),A(M),Y(N),B(N) C C EXTRAPOLATION CASES C DO 30 I=1,N IF(Y(I).GT.X(1)) B(I)=A(1)+((A(1)-A(2))/(X(1)-X(2)))*(Y(I)-X(1)) IF(Y(I).LT.X(M)) B(I)=A(M) 30 CONTINUE C C INTERPOLATION CASES C NM=M-1 DO 10 I=1,N DO 20 J=1,NM IF(Y(I).LE.X(J).AND.Y(I).GE.X(J+1)) + B(I)=A(J) -(A(J)-A(J+1))*(X(J)-Y(I))/(X(J)-X(J+1)) 20 CONTINUE 10 CONTINUE C RETURN END