10 REAL,
DIMENSION(:,:),
INTENT(IN) :: pa
11 REAL,
DIMENSION(:,:),
INTENT(IN) :: pb
12 REAL,
DIMENSION(:,:),
INTENT(IN) :: pc
13 REAL,
DIMENSION(:,:),
INTENT(IN) :: py
15 REAL,
DIMENSION(:,:),
INTENT(OUT) :: px
17 INTEGER,
DIMENSION(:),
INTENT(IN) :: knlvls_use
19 INTEGER,
INTENT(IN) :: kdifloop
23 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pa
24 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pb
25 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pc
26 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: py
28 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: px
30 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: knlvls_use
32 INTEGER,
INTENT(IN) :: kdifloop
103 USE yomhook
, ONLY : lhook, dr_hook
104 USE parkind1
, ONLY : jprb
110 REAL,
DIMENSION(:,:),
INTENT(IN) :: pa
111 REAL,
DIMENSION(:,:),
INTENT(IN) :: pb
112 REAL,
DIMENSION(:,:),
INTENT(IN) :: pc
113 REAL,
DIMENSION(:,:),
INTENT(IN) :: py
115 REAL,
DIMENSION(:,:),
INTENT(OUT) :: px
117 INTEGER,
DIMENSION(:),
INTENT(IN) :: knlvls_use
119 INTEGER,
INTENT(IN) :: kdifloop
123 REAL,
DIMENSION(SIZE(PA,1),SIZE(PA,2)) :: zw
124 REAL,
DIMENSION(SIZE(PA,1) ) :: zdet
130 REAL(KIND=JPRB) :: zhook_handle
133 IF (lhook) CALL dr_hook(
'TRIDIAG_GROUND_SNOWCRO_1D',0,zhook_handle)
145 px(:,1) = py(:,1) / zdet(:)
154 IF ( jl<=knlvls_use(jj)-kdifloop )
THEN
156 zw(jj,jl) = pc(jj,jl-1)/zdet(jj)
157 zdet(jj) = pb(jj,jl ) - pa(jj,jl)*zw(jj,jl)
159 px(jj,jl) = ( py(jj,jl) - pa(jj,jl)*px(jj,jl-1) ) / zdet(jj)
176 IF ( jl<=knlvls_use(jj)-1-kdifloop )
THEN
178 px(jj,jl) = px(jj,jl) - zw(jj,jl+1)*px(jj,jl+1)
186 IF (lhook) CALL dr_hook(
'TRIDIAG_GROUND_SNOWCRO_1D',1,zhook_handle)
256 USE yomhook
, ONLY : lhook, dr_hook
257 USE parkind1
, ONLY : jprb
263 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pa
264 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pb
265 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pc
266 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: py
268 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: px
270 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: knlvls_use
272 INTEGER,
INTENT(IN) :: kdifloop
276 REAL,
DIMENSION(SIZE(PA,2)) :: zw
280 INTEGER :: jl, jj, jb
283 REAL(KIND=JPRB) :: zhook_handle
286 IF (lhook) CALL dr_hook(
'TRIDIAG_GROUND_SNOWCRO_2D',0,zhook_handle)
303 px(jj,1,jb) = py(jj,1,jb) / zdet
310 IF ( jl<=knlvls_use(jj,jb)-kdifloop )
THEN
312 zw(jl) = pc(jj,jl-1,jb) /zdet
313 zdet = pb(jj,jl ,jb) - pa(jj,jl,jb) * zw(jl)
315 px(jj,jl,jb) = ( py(jj,jl,jb) - pa(jj,jl,jb) * px(jj,jl-1,jb) ) / zdet
328 IF ( jl<=knlvls_use(jj,jb)-1-kdifloop )
THEN
330 px(jj,jl,jb) = px(jj,jl,jb) - zw(jl+1) * px(jj,jl+1,jb)
340 IF (lhook) CALL dr_hook(
'TRIDIAG_GROUND_SNOWCRO_2D',1,zhook_handle)
subroutine tridiag_ground_snowcro_1d(PA, PB, PC, PY, PX, KNLVLS_USE, KDIFLOOP)
subroutine tridiag_ground_snowcro_2d(PA, PB, PC, PY, PX, KNLVLS_USE, KDIFLOOP)