61 USE yomhook
,ONLY : lhook, dr_hook
62 USE parkind1
,ONLY : jprb
68 REAL,
DIMENSION(:,:),
INTENT(IN) :: pz1
70 REAL,
DIMENSION(:,:),
INTENT(IN) :: pz2
72 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kklin
75 REAL,
DIMENSION(:,:),
INTENT(OUT):: pcoeflin
82 LOGICAL,
DIMENSION(SIZE(PZ1,1),SIZE(PZ1,2)) :: glevel
84 INTEGER,
DIMENSION(SIZE(PZ1,1)) :: ilevel
85 INTEGER,
DIMENSION(SIZE(PZ1,1)) :: iunder
87 REAL(KIND=JPRB) :: zhook_handle
90 IF (lhook) CALL dr_hook(
'COEF_VER_INTERP_LIN_SURF',0,zhook_handle)
105 glevel(:,:)=pz1(:,:)<=spread(pz2(:,jk2),2,
SIZE(pz1,2)) *(1.-zeps)
106 ilevel(:) =count(glevel(:,:),2)
110 ilevel(:)=max(ilevel(:),1)
113 ilevel(:)=min(ilevel(:),
SIZE(pz1,2)-1)
115 kklin(:,jk2)=ilevel(:)
123 IF (pz1(ji,ilevel(ji))==pz1(ji,ilevel(ji)+1))
THEN
126 pcoeflin(ji,jk2)=(pz2(ji,jk2)-pz1(ji,ilevel(ji)+1)) &
127 /(pz1(ji,ilevel(ji))-pz1(ji,ilevel(ji)+1))
129 IF (iunder(ji) < 1 ) pcoeflin(ji,jk2)=1.
130 IF (ilevel(ji)==
SIZE(pz1,2)-1) pcoeflin(ji,jk2)=max(pcoeflin(ji,jk2),0.)
136 IF (lhook) CALL dr_hook(
'COEF_VER_INTERP_LIN_SURF',1,zhook_handle)
subroutine coef_ver_interp_lin_surf(PZ1, PZ2, KKLIN, PCOEFLIN)