SUBROUTINE SPLDIF3_H( ZOUT, POUT, LMXOUT, ZIN, PIN, LMXIN, IJMAX, W SM, H, AL, AM, AP, C ) DIMENSION ZOUT(IJMAX,LMXOUT), POUT(IJMAX,LMXOUT), 1 ZIN (IJMAX,LMXIN), PIN (IJMAX,LMXIN) DIMENSION SM(IJMAX,LMXIN), H(IJMAX,LMXIN), AL(IJMAX,LMXIN), 1 AM(IJMAX,LMXIN), AP(IJMAX,LMXIN), C(IJMAX,LMXIN) C INPUT / ZIN (L), PIN (L), LMXIN : INPUT.DATA, PRES(LOG), NUMBER C OUTPUT/ ZOUT(L), POUT(L), LMXOUT : OUTPUT-VAL, PRES(LOG), NUMBER LM1 = LMXIN-1 GR = -gravity/gas_constant DO 110 L = 2, LMXIN DO 110 I = 1, IJMAX H(I,L) = PIN(I,L)-PIN(I,L-1) 110 CONTINUE DO 120 L = 2, LM1 DO 120 I = 1, IJMAX AL(I,L) = 0.5*H(I,L+1)/(H(I,L)+H(I,L+1)) AM(I,L) = 0.5-AL(I,L) 120 CONTINUE C ( LAPSE RATE IS CONSTANT ) C SM(1) = SM(2) ; SM(LMXIN-1) = SM(LMXIN) : SECOND DERIVATIVE DO 125 I = 1, IJMAX AL(I,1) = -1.0 ! ORG AM(I,LMXIN) = 0.0 ! UPPER BOUNDARY CORG AM(I,LMXIN) = -1.0 ! ORG AL(I,LMXIN) = 0.0 ! ORG CHOON AL(I,LMXIN) = -1.0 ! KMA 125 CONTINUE DO 130 L = 2, LMXIN DO 130 I = 1, IJMAX C AP(I,L) = 1.0/(1.0-AL(I,L-1)*AM(I,L)) AL(I,L) = AL(I,L)*AP(I,L) 130 CONTINUE DO 155 I = 1, IJMAX C(I,1) = 0.0 C(I,LMXIN) = 0.0 155 CONTINUE C DO 160 L = 2, LM1 DO 160 I = 1, IJMAX C(I,L) = 3.0*((ZIN(I,L+1)-ZIN(I,L))/H(I,L+1) 1 - (ZIN(I,L)-ZIN(I,L-1))/H(I,L)) 2 /(H(I,L)+H(I,L+1)) 160 CONTINUE C FORWARD SUBSTITUTION DO 200 L = 2, LMXIN DO 200 I = 1, IJMAX C(I,L) = (C(I,L)-C(I,L-1)*AM(I,L))*AP(I,L) 200 CONTINUE DO 205 I = 1, IJMAX SM(I,LMXIN) = C(I,LMXIN) 205 CONTINUE C BACKWARD SUBSTUTUTION DO 220 K = 1, LM1 DO 220 I = 1, IJMAX L = LMXIN-K SM(I,L) = C(I,L)-AL(I,L)*SM(I,L+1) 220 CONTINUE C INTERPOLATION C LB = 2 DO 500 LOUT = 1, LMXOUT DO 500 I = 1, IJMAX X = POUT(I,LOUT) L = LOUT ! FOR ONLY PIN.EQ.POUT IF( L.LT.2 ) L=2 CM DO 300 L = LB, LMXIN CM IF( X.GE.PIN(L) ) GO TO 310 CM300 CONTINUE CM L = LMXIN CM310 LB = L ZOUT(I,LOUT) = SM(I,L-1)*( -(PIN(I,L)-X)**2 1 /(2.0*H(I,L))+H(I,L)/6.0 ) 2 + SM(I,L) *( (X-PIN(I,L-1))**2 3 /(2.0*H(I,L))-H(I,L)/6.0 ) \ + ( ZIN(I,L)-ZIN(I,L-1) )/H(I,L) ZOUT(I,LOUT) = ZOUT(I,LOUT)*GR 500 CONTINUE RETURN END SUBROUTINE SPLDIF3_H