52 integer,
private,
allocatable :: interp_xi2z_idx (:,:,:,:)
53 real(
rp),
private,
allocatable :: interp_xi2z_coef (:, :,:)
54 integer,
private,
allocatable :: interp_z2xi_idx (:,:,:,:)
55 real(
rp),
private,
allocatable :: interp_z2xi_coef (:, :,:)
57 integer,
private,
allocatable :: interp_xi2p_idx (:,:,:,:)
58 real(
rp),
private,
allocatable :: interp_xi2p_coef (:, :,:)
61 integer,
private,
allocatable :: interp_xih2zh_idx (:,:,:,:)
62 real(
rp),
private,
allocatable :: interp_xih2zh_coef(:, :,:)
63 integer,
private,
allocatable :: interp_zh2xih_idx (:,:,:,:)
64 real(
rp),
private,
allocatable :: interp_zh2xih_coef(:, :,:)
66 integer,
private,
allocatable :: interp_xih2p_idx (:,:,:,:)
67 real(
rp),
private,
allocatable :: interp_xih2p_coef (:, :,:)
70 real(
rp),
private,
allocatable :: lnpres (:,:,:)
71 real(
rp),
private,
allocatable :: lnpresh(:,:,:)
72 real(
rp),
private,
allocatable :: lnpaxis(:)
89 integer,
intent(in) :: ka, ks, ke
90 integer,
intent(in) :: ia, is, ie
91 integer,
intent(in) :: ja, js, je
92 logical,
intent(in) :: topo_exist
93 real(
rp),
intent(in) :: xi ( ka)
94 real(
rp),
intent(in) :: xih(0:ka)
95 real(
rp),
intent(in) :: z ( ka,ia,ja)
96 real(
rp),
intent(in) :: zh (0:ka,ia,ja)
102 log_info(
"INTERP_VERT_setcoef",*)
'Setup'
103 log_info(
"INTERP_VERT_setcoef",*)
'No namelists.'
108 log_info(
"INTERP_VERT_setcoef",*)
'Topography exists & interpolation has meaning? : ',
interp_available
112 allocate( interp_xi2z_idx(ka,2,ia,ja) )
113 allocate( interp_xi2z_coef(ka, ia,ja) )
114 allocate( interp_z2xi_idx(ka,2,ia,ja) )
115 allocate( interp_z2xi_coef(ka, ia,ja) )
123 interp_xi2z_idx(:,:,i,j), &
124 interp_xi2z_coef(:, i,j), &
125 flag_extrap = .true. )
135 interp_z2xi_idx(:,:,i,j), &
136 interp_z2xi_coef(:, i,j), &
137 flag_extrap = .true. )
144 allocate( interp_xih2zh_idx(ka,2,ia,ja) )
145 allocate( interp_xih2zh_coef(ka, ia,ja) )
146 allocate( interp_zh2xih_idx(ka,2,ia,ja) )
147 allocate( interp_zh2xih_coef(ka, ia,ja) )
154 zh(1:,i,j), xih(1:), &
155 interp_xih2zh_idx(:,:,i,j), &
156 interp_xih2zh_coef(:, i,j), &
157 flag_extrap = .false. )
166 xih(1:), zh(1:,i,j), &
167 interp_zh2xih_idx(:,:,i,j), &
168 interp_zh2xih_coef(:, i,j), &
169 flag_extrap = .true. )
189 integer,
intent(in) :: ka, ks, ke
190 integer,
intent(in) :: ia, is, ie
191 integer,
intent(in) :: ja, js, je
192 real(
rp),
intent(in) :: xi (ka)
193 real(
rp),
intent(in) :: z (ka,ia,ja)
194 real(
rp),
intent(in) :: var (ka,ia,ja)
195 real(
rp),
intent(out) :: var_z(ka,ia,ja)
207 interp_xi2z_idx(:,:,i,j), &
208 interp_xi2z_coef(:, i,j), &
230 integer,
intent(in) :: ka, ks, ke
231 integer,
intent(in) :: ia, is, ie
232 integer,
intent(in) :: ja, js, je
233 real(
rp),
intent(in) :: z (ka,ia,ja)
234 real(
rp),
intent(in) :: xi (ka)
235 real(
rp),
intent(in) :: var (ka,ia,ja)
236 real(
rp),
intent(out) :: var_xi(ka,ia,ja)
248 interp_z2xi_idx(:,:,i,j), &
249 interp_z2xi_coef(:, i,j), &
271 integer,
intent(in) :: ka, ks, ke
272 integer,
intent(in) :: ia, is, ie
273 integer,
intent(in) :: ja, js, je
274 real(
rp),
intent(in) :: xih (0:ka)
275 real(
rp),
intent(in) :: zh (0:ka,ia,ja)
276 real(
rp),
intent(in) :: var (ka,ia,ja)
277 real(
rp),
intent(out) :: var_z(ka,ia,ja)
289 interp_xih2zh_idx(:,:,i,j), &
290 interp_xih2zh_coef(:, i,j), &
291 zh(1:,i,j), xih(1:), &
312 integer,
intent(in) :: ka, ks, ke
313 integer,
intent(in) :: ia, is, ie
314 integer,
intent(in) :: ja, js, je
315 real(
rp),
intent(in) :: zh (0:ka,ia,ja)
316 real(
rp),
intent(in) :: xih (0:ka)
317 real(
rp),
intent(in) :: var (ka,ia,ja)
318 real(
rp),
intent(out) :: var_xi(ka,ia,ja)
330 interp_zh2xih_idx(:,:,i,j), &
331 interp_zh2xih_coef(:, i,j), &
332 xih(1:), zh(1:,i,j), &
346 integer,
intent(in) :: kpres
347 integer,
intent(in) :: ka
348 integer,
intent(in) :: ia
349 integer,
intent(in) :: ja
352 allocate( interp_xi2p_idx(kpres,2,ia,ja) )
353 allocate( interp_xi2p_coef(kpres, ia,ja) )
354 allocate( interp_xih2p_idx(kpres,2,ia,ja) )
355 allocate( interp_xih2p_coef(kpres, ia,ja) )
357 allocate( lnpres(ka,ia,ja) )
358 allocate( lnpresh(ka,ia,ja) )
359 allocate( lnpaxis(kpres) )
378 integer,
intent(in) :: kpres
379 integer,
intent(in) :: ka, ks, ke
380 integer,
intent(in) :: ia, is, ie
381 integer,
intent(in) :: ja, js, je
382 real(
rp),
intent(in) :: pres ( ka,ia,ja)
383 real(
rp),
intent(in) :: presh (0:ka,ia,ja)
384 real(
rp),
intent(in) :: sfc_pres( ia,ja)
385 real(
rp),
intent(in) :: paxis (kpres)
394 lnpaxis(k) = - log( paxis(k) )
404 lnpres(k,i,j) = - log( pres(k,i,j) )
407 lnpres(:,i,j), lnpaxis(:), &
408 interp_xi2p_idx(:,:,i,j), &
409 interp_xi2p_coef(:, i,j), &
410 flag_extrap = .false. )
421 lnpresh(k,i,j) = - log( presh(k,i,j) )
424 lnpresh(:,i,j), lnpaxis(:), &
425 interp_xih2p_idx(:,:,i,j), &
426 interp_xih2p_coef(:, i,j), &
427 flag_extrap = .false. )
446 integer,
intent(in) :: kpres
447 integer,
intent(in) :: ka, ks, ke
448 integer,
intent(in) :: ia, is, ie
449 integer,
intent(in) :: ja, js, je
450 real(
rp),
intent(in) :: var (ka ,ia,ja)
451 real(
rp),
intent(out) :: var_p(kpres,ia,ja)
463 interp_xi2p_idx(:,:,i,j), &
464 interp_xi2p_coef(:, i,j), &
465 lnpres(:,i,j), lnpaxis(:), &
486 integer,
intent(in) :: kpres
487 integer,
intent(in) :: ka, ks, ke
488 integer,
intent(in) :: ia, is, ie
489 integer,
intent(in) :: ja, js, je
490 real(
rp),
intent(in) :: var (ka ,ia,ja)
491 real(
rp),
intent(out) :: var_p(kpres,ia,ja)
503 interp_xih2p_idx(:,:,i,j), &
504 interp_xih2p_coef(:, i,j), &
505 lnpresh(:,i,j), lnpaxis(:), &