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
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)
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)