7 psflux_f, pforc_f, pdforc_fdf, pdz, pdzf, &
8 pext, pdextdv, pf, pwf, palfa, pbeta )
45 USE yomhook
,ONLY : lhook, dr_hook
46 USE parkind1
,ONLY : jprb
53 INTEGER,
INTENT(IN) :: ki
54 INTEGER,
INTENT(IN) :: klvl
55 REAL,
INTENT(IN) :: ptstep
56 INTEGER,
INTENT(IN) :: kimpl
61 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pk
62 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdkddvdz
65 REAL,
DIMENSION(KI),
INTENT(IN) :: psflux_f
66 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pforc_f
67 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdforc_fdf
69 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdz
71 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdzf
73 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pext
74 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdextdv
77 REAL,
DIMENSION(KI,KLVL),
INTENT(INOUT) :: pf
78 REAL,
DIMENSION(KI,KLVL),
INTENT(OUT) :: pwf
79 REAL,
DIMENSION(KI),
OPTIONAL,
INTENT(OUT) :: palfa
80 REAL,
DIMENSION(KI),
OPTIONAL,
INTENT(OUT) :: pbeta
88 REAL,
DIMENSION(KI,KLVL) :: zdfdz
89 REAL,
DIMENSION(KI,KLVL) :: zwork
91 REAL,
DIMENSION(KI,KLVL) :: zf
92 REAL,
DIMENSION(KI,KLVL) :: zdfddvdz
95 REAL,
DIMENSION(KI) :: zdfadt
96 REAL,
DIMENSION(KI) :: zdwfdz
97 REAL,
DIMENSION(KI) :: zalfa, zbeta
99 REAL(KIND=JPRB) :: zhook_handle
109 IF (lhook) CALL dr_hook(
'CANOPY_EVOL_FIELD',0,zhook_handle)
118 zdfdz(:,jlayer) = (pf(:,jlayer) - pf(:,jlayer-1)) / pdzf(:,jlayer)
129 zwork(:,1) = psflux_f(:)
133 zwork(:,jlayer) = -pk(:,jlayer) * zdfdz(:,jlayer)
147 zdfddvdz(:,2:klvl) = - pk(:,2:klvl) - pdkddvdz(:,2:klvl) * zdfdz(:,2:klvl)
155 CALL
tridiag_surf(pf, zwork, zdfddvdz, pext, pdextdv, ptstep, &
156 pdzf, pdz, zf, limpl, zalfa, zbeta )
158 IF (present(palfa)) palfa = zalfa
159 IF (present(pbeta)) pbeta = zbeta
167 pwf(:,1) = psflux_f(:)
170 pwf(:,jlayer) = pwf(:,jlayer-1) &
171 + ( pforc_f(:,jlayer-1) + pdforc_fdf(:,jlayer-1) * (zf(:,jlayer-1)-pf(:,jlayer-1)) ) &
182 IF (lhook) CALL dr_hook(
'CANOPY_EVOL_FIELD',1,zhook_handle)
subroutine canopy_evol_field(KI, KLVL, PTSTEP, KIMPL, PK, PDKDDVDZ, PSFLUX_F, PFORC_F, PDFORC_FDF, PDZ, PDZF, PEXT, PDEXTDV, PF, PWF, PALFA, PBETA)
subroutine tridiag_surf(PVARM, PF, PDFDDTDZ, PEXT, PDEXTDV, PTSTEP, PDZZ, PDZM, PVARP, OIMPL, PALFA, PBETA)