9 pu,pth,puw,pwth,pwq,pleps,ptke )
49 USE yomhook
,ONLY : lhook, dr_hook
50 USE parkind1
,ONLY : jprb
57 INTEGER,
INTENT(IN) :: ki
58 INTEGER,
INTENT(IN) :: klvl
59 REAL,
INTENT(IN) :: ptstep
60 REAL,
DIMENSION(KI),
INTENT(IN) :: prhoa
61 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pz
62 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pzf
63 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdz
65 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdzf
67 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pforc_e
68 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdforc_ede
70 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pu
71 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pth
72 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: puw
73 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pwth
74 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pwq
75 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pleps
76 REAL,
DIMENSION(KI,KLVL),
INTENT(INOUT) :: ptke
84 REAL,
DIMENSION(KI,KLVL) :: zdudz
85 REAL,
DIMENSION(KI,KLVL) :: zdp
87 REAL,
DIMENSION(KI,KLVL) :: ztp
89 REAL,
DIMENSION(KI,KLVL) :: zdiss_o_tke
90 REAL,
DIMENSION(KI,KLVL) :: zf
91 REAL,
DIMENSION(KI,KLVL) :: zdfddvdz
94 REAL,
DIMENSION(KI,KLVL) :: zext
95 REAL,
DIMENSION(KI,KLVL) :: zdextdv
98 REAL,
DIMENSION(KI,KLVL) :: ztke
99 REAL(KIND=JPRB) :: zhook_handle
109 IF (lhook) CALL dr_hook(
'CANOPY_EVOL_TKE',0,zhook_handle)
125 zdudz(:,jlayer) = (pu(:,jlayer) - pu(:,jlayer-1)) / pdzf(:,jlayer)
135 zdp(:,1) = - puw(:,2) * zdudz(:,2) * (pzf(:,2)/pz(:,1))
139 zdp(:,jlayer) = - 0.5 * (puw(:,jlayer) * zdudz(:,jlayer) ) &
140 - 0.5 * (puw(:,jlayer+1) * zdudz(:,jlayer+1))
144 zdp(:,klvl) = - puw(:,klvl) * zdudz(:,klvl) * (pzf(:,klvl)/pz(:,klvl))
148 zdextdv = zdextdv + 0.
159 ztp(:,jlayer) = xg/pth(:,jlayer) * 0.5 * ( (pwth(:,jlayer)+ pwth(:,jlayer+1)) &
160 + (xrv/xrd-1) * (pwq(:,jlayer) + pwq(:,jlayer) )/prhoa(:) )
164 ztp(:,klvl) = xg/pth(:,klvl) * pwth(:,klvl)
168 zdextdv = zdextdv + 0.
175 zdiss_o_tke = - xced * sqrt(ptke(:,:)) / pleps(:,:)
178 zext = zext + zdiss_o_tke * ptke(:,:)
179 zdextdv = zdextdv + 1.5 * zdiss_o_tke
187 zext = zext + pforc_e(:,:)
188 zdextdv = zdextdv + pdforc_ede(:,:)
198 CALL
tridiag_surf(ptke,zf,zdfddvdz,zext,zdextdv,ptstep, &
206 ptke(:,:) = ztke(:,:)
213 ptke(:,:) = max(ptke,xtkemin)
214 IF (lhook) CALL dr_hook(
'CANOPY_EVOL_TKE',1,zhook_handle)
subroutine canopy_evol_tke(KI, KLVL, PTSTEP, PRHOA, PZ, PZF, PDZ, PDZF, PFORC_E, PDFORC_EDE, PU, PTH, PUW, PWTH, PWQ, PLEPS, PTKE)
subroutine tridiag_surf(PVARM, PF, PDFDDTDZ, PEXT, PDEXTDV, PTSTEP, PDZZ, PDZM, PVARP, OIMPL, PALFA, PBETA)