6 SUBROUTINE canopy_evol(SB, KI, PTSTEP, KIMPL, PZZ, PWIND, PTA, PQA, PPA, PRHOA, &
7 PSFLUX_U, PSFLUX_T, PSFLUX_Q, PFORC_U, PDFORC_UDU, &
8 PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, &
9 PFORC_Q, PDFORC_QDQ, PLM, PLEPS, PUSTAR, &
10 PALFAU, PBETAU, PALFATH, PBETATH, PALFAQ, PBETAQ, &
53 USE modi_canopy_evol_wind
54 USE modi_canopy_evol_tke
55 USE modi_canopy_evol_temp
69 INTEGER,
INTENT(IN) :: KI
70 REAL,
INTENT(IN) :: PTSTEP
71 INTEGER,
INTENT(IN) :: KIMPL
76 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PZZ
77 REAL,
DIMENSION(KI),
INTENT(IN) :: PWIND
78 REAL,
DIMENSION(KI),
INTENT(IN) :: PTA
79 REAL,
DIMENSION(KI),
INTENT(IN) :: PQA
80 REAL,
DIMENSION(KI),
INTENT(IN) :: PPA
81 REAL,
DIMENSION(KI),
INTENT(IN) :: PRHOA
82 REAL,
DIMENSION(KI),
INTENT(IN) :: PSFLUX_U
83 REAL,
DIMENSION(KI),
INTENT(IN) :: PSFLUX_T
84 REAL,
DIMENSION(KI),
INTENT(IN) :: PSFLUX_Q
85 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PFORC_U
86 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PDFORC_UDU
88 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PFORC_E
89 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PDFORC_EDE
91 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PFORC_T
92 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PDFORC_TDT
94 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PFORC_Q
95 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(IN) :: PDFORC_QDQ
98 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(OUT) :: PLM
99 REAL,
DIMENSION(KI,SB%NLVL),
INTENT(OUT) :: PLEPS
100 REAL,
DIMENSION(KI),
INTENT(OUT) :: PUSTAR
102 REAL,
DIMENSION(KI),
INTENT(OUT) :: PALFAU
103 REAL,
DIMENSION(KI),
INTENT(OUT) :: PBETAU
104 REAL,
DIMENSION(KI),
INTENT(OUT) :: PALFATH
105 REAL,
DIMENSION(KI),
INTENT(OUT) :: PBETATH
106 REAL,
DIMENSION(KI),
INTENT(OUT) :: PALFAQ
107 REAL,
DIMENSION(KI),
INTENT(OUT) :: PBETAQ
109 LOGICAL,
OPTIONAL,
INTENT(IN) :: ONEUTRAL
119 REAL,
DIMENSION(KI,SB%NLVL) :: ZK
120 REAL,
DIMENSION(KI,SB%NLVL) :: ZDKDDVDZ
121 REAL,
DIMENSION(KI,SB%NLVL) :: ZTH
122 REAL,
DIMENSION(KI) :: ZTHA
123 REAL,
DIMENSION(KI,SB%NLVL) :: ZEXN
124 REAL,
DIMENSION(KI,SB%NLVL) :: ZUW
125 REAL,
DIMENSION(KI) :: ZSFLUX_TH
126 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_TH
127 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_THDTH
129 REAL,
DIMENSION(KI,SB%NLVL) :: ZWTH
130 REAL,
DIMENSION(KI,SB%NLVL) :: ZWQ
131 REAL,
DIMENSION(KI,SB%NLVL) :: ZSFTH
132 REAL,
DIMENSION(KI,SB%NLVL) :: ZSFRV
134 REAL,
DIMENSION(KI,SB%NLVL) :: ZRHOA
135 REAL(KIND=JPRB) :: ZHOOK_HANDLE
141 IF (
PRESENT(oneutral)) gneutral = oneutral
149 IF(pwind(ji)>0. .AND. sb%XU(ji,sb%NLVL-1)==0.)
THEN 151 sb%XU(ji,:) = pwind(ji) * log(sb%XZ(ji,:)/zz0) / log(sb%XZ(ji,sb%NLVL
159 CALL rmc01_surf(pzz,sb%XLMO,plm,pleps,gneutral)
171 zk(:,jlayer) = 0.5 *
xcmfs * plm(:,jlayer) * sqrt(sb%XTKE(:,jlayer)
187 psflux_u, pforc_u, pdforc_udu, zuw, palfau, pbetau
192 pustar = sqrt(abs(zuw(:,sb%NLVL)))
211 sb%XP(:,jlayer) = ppa(:) +
xg * prhoa(:) * (sb%XZ(:,sb%NLVL) - sb%XZ
216 WHERE(sb%XT/=
xundef) zth(:,:) = sb%XT(:,:) / zexn(:,:)
218 ztha(:) = pta(:) / zexn(:,sb%NLVL)
225 zk(:,jlayer) = 0.5 *
xcshf * plm(:,jlayer) * sqrt(sb%XTKE(:,jlayer
238 zsflux_th = psflux_t / zexn(:,1)
239 zforc_th = pforc_t / zexn
240 zdforc_thdth = pdforc_tdt
247 zsflux_th, zforc_th, zdforc_thdth, zth, zwth, palfath
252 WHERE(sb%XT/=
xundef) sb%XT(:,:) = zth(:,:) * zexn(:,:)
260 psflux_q, pforc_q, pdforc_qdq, sb%XQ, zwq, palfaq
263 IF (kimpl==1 .AND.
lhook)
CALL dr_hook(
'CANOPY_EVOL',1,zhook_handle)
272 CALL canopy_evol_tke(sb, ki, ptstep, prhoa, pforc_e, pdforc_ede, zth, zuw
276 IF (.NOT.gneutral)
THEN 287 zrhoa(:,:) = spread(prhoa(:),2,sb%NLVL)
289 zsfth(:,:) = zwth(:,:)
290 zsfrv(:,:) = zwq(:,:) / zrhoa(:,:)
292 sb%XLMO(:,:) =
lmo(sqrt(abs(zuw)),sb%XT,sb%XQ,zsfth,zsfrv)
295 WHERE (sb%XLMO(:,jlayer)>0.) sb%XLMO(:,jlayer) = max(sb%XLMO(:,jlayer
296 WHERE (sb%XLMO(:,jlayer)<0.) sb%XLMO(:,jlayer) = min(sb%XLMO(:,jlayer
304 sb%XT(:,sb%NLVL) = pta(:)
306 sb%XQ(:,sb%NLVL) = pqa(:)
310 sb%XU(:,sb%NLVL) = pwind(:)
subroutine canopy_evol_tke(SB, KI, PTSTEP, PRHOA, PFORC_E, PDFORC_
subroutine canopy_evol(SB, KI, PTSTEP, KIMPL, PZZ, PWIND, PTA, PQA
subroutine canopy_evol_wind(SB, KI, PTSTEP, KIMPL, PWIND, PK, PDKD
subroutine rmc01_surf(PZ, PLMO, PLK, PLEPS, ONEUTRAL)
subroutine canopy_evol_temp(SB, KI, PTSTEP, KIMPL,PTHA, PK, PDKDD