13 REAL,
DIMENSION(:,:),
INTENT(IN) :: PZ1
14 REAL,
DIMENSION(:,:),
INTENT(IN) :: PT1
15 REAL,
DIMENSION(:),
INTENT(IN) :: PZ2
16 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PT2
22 REAL,
DIMENSION(:,:),
INTENT(IN) :: PZ1
23 REAL,
DIMENSION(:,:),
INTENT(IN) :: PT1
24 REAL,
DIMENSION(:,:),
INTENT(IN) :: PZ2
25 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PT2
70 REAL,
DIMENSION(:,:),
INTENT(IN) :: PZ1
71 REAL,
DIMENSION(:,:),
INTENT(IN) :: PT1
72 REAL,
DIMENSION(:),
INTENT(IN) :: PZ2
73 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PT2
77 REAL,
DIMENSION(SIZE(PZ1,2)-1) :: ZDIZ1
78 INTEGER :: JL, JI, JK, JK2
83 INTEGER :: ILEVEL, IS1
85 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
87 IF (
lhook)
CALL dr_hook(
'MODI_INTERP_GRID:INTERP_GRID_1D_1',0,zhook_handle)
93 IF (
lhook)
CALL dr_hook(
'MODI_INTERP_GRID:INTERP_GRID_1D_1',1,zhook_handle)
96 IF (
lhook)
CALL dr_hook(
'MODI_INTERP_GRID:INTERP_GRID_1D_2',0,zhook_handle_omp)
100 IF (any(pt1(ji,:)==
xundef))
THEN 106 DO jk = 1,
SIZE(pz1,2)-1
107 IF (pz1(ji,jk)==pz1(ji,jk+1))
THEN 110 zdiz1(jk) = 1./(pz1(ji,jk)-pz1(ji,jk+1))
116 zthr = pz2(jk2) * (1.-zeps)
117 ilevel =
count(pz1(ji,:)<=zthr)
119 IF (ilevel < 1 )
THEN 127 ilevel = min(ilevel,is1-1)
131 zcoeflin = ( pz2(jk2)-pz1(ji,ilevel+1) ) * zdiz1(ilevel)
132 IF (ilevel==is1-1) zcoeflin = max(zcoeflin,0.)
136 pt2(ji,jk2) = zcoeflin * pt1(ji,iklin) + (1.-zcoeflin) * pt1(ji,iklin+1)
144 IF (
lhook)
CALL dr_hook(
'MODI_INTERP_GRID:INTERP_GRID_1D_2',1,zhook_handle_omp)
163 REAL,
DIMENSION(:,:),
INTENT(IN) :: PZ1
164 REAL,
DIMENSION(:,:),
INTENT(IN) :: PT1
165 REAL,
DIMENSION(:,:),
INTENT(IN) :: PZ2
166 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PT2
170 REAL,
DIMENSION(SIZE(PZ1,2)-1) :: ZDIZ1
174 INTEGER :: JI, JK, JK2
176 INTEGER :: ILEVEL, IS1
177 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
179 IF (
lhook)
CALL dr_hook(
'MODI_INTERP_GRID:INTERP_GRID_2D_1',0,zhook_handle)
185 IF (
lhook)
CALL dr_hook(
'MODI_INTERP_GRID:INTERP_GRID_2D_1',1,zhook_handle)
188 IF (
lhook)
CALL dr_hook(
'MODI_INTERP_GRID:INTERP_GRID_2D_2',0,zhook_handle_omp)
190 DO ji = 1,
SIZE(pz1,1)
192 IF (any(pt1(ji,:)==
xundef))
THEN 198 DO jk = 1,
SIZE(pz1,2)-1
199 IF (pz1(ji,jk)==pz1(ji,jk+1))
THEN 202 zdiz1(jk) = 1./(pz1(ji,jk)-pz1(ji,jk+1))
206 DO jk2 = 1,
SIZE(pz2,2)
208 zthr = pz2(ji,jk2) * (1.-zeps)
209 ilevel =
count(pz1(ji,:)<=zthr)
211 IF (ilevel < 1 )
THEN 219 ilevel = min(ilevel,is1-1)
222 zcoeflin = ( pz2(ji,jk2)-pz1(ji,ilevel+1) ) * zdiz1(ilevel)
223 IF (ilevel==is1-1) zcoeflin = max(zcoeflin,0.)
227 pt2(ji,jk2) = zcoeflin * pt1(ji,iklin) + (1.-zcoeflin) * pt1(ji,iklin+1)
235 IF (
lhook)
CALL dr_hook(
'MODI_INTERP_GRID:INTERP_GRID_2D_2',1,zhook_handle_omp)
subroutine interp_grid_2d(PZ1, PT1, PZ2, PT2)
subroutine interp_grid_1d(PZ1, PT1, PZ2, PT2)