6 SUBROUTINE canopy(KI, KLVL, PZF, PDZ, PHEIGHT, PDENSITY, PCDRAG, PU, PAIRVOL, &
7 psv, pforc, pforc_u, pdforc_udu, pforc_e, pdforc_ede )
36 USE yomhook
,ONLY : lhook, dr_hook
37 USE parkind1
,ONLY : jprb
43 INTEGER,
INTENT(IN) :: ki
44 INTEGER,
INTENT(IN) :: klvl
45 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pzf
46 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdz
47 REAL,
DIMENSION(KI),
INTENT(IN) :: pheight
48 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pdensity
49 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pcdrag
51 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pu
53 REAL,
DIMENSION(KI,KLVL),
INTENT(IN) :: pairvol
55 REAL,
DIMENSION(KI,KLVL),
INTENT(OUT) :: psv
57 REAL,
DIMENSION(KI,KLVL),
INTENT(OUT) :: pforc
59 REAL,
DIMENSION(KI,KLVL),
INTENT(OUT) :: pforc_u
60 REAL,
DIMENSION(KI,KLVL),
INTENT(OUT) :: pdforc_udu
62 REAL,
DIMENSION(KI,KLVL),
INTENT(OUT) :: pforc_e
63 REAL,
DIMENSION(KI,KLVL),
INTENT(OUT) :: pdforc_ede
69 REAL(KIND=JPRB) :: zhook_handle
73 IF (lhook) CALL dr_hook(
'CANOPY',0,zhook_handle)
84 WHERE ( pzf(:,jlayer) < pheight(:) )
85 psv(:,jlayer) = pdensity(:,jlayer) / pheight(:)
86 WHERE ( pzf(:,jlayer+1) > pheight(:) )
87 psv(:,jlayer) = psv(:,jlayer) * ( pheight(:) - pzf(:,jlayer) )
89 psv(:,jlayer) = psv(:,jlayer) * pdz(:,jlayer)
95 pforc(:,:) = pcdrag(:,:) * pu(:,:) * psv(:,:)/pairvol(:,:)/pdz(:,:)
114 pforc_u(:,:) = pforc_u - pforc(:,:) * pu(:,:)
115 pdforc_udu(:,:) = pdforc_udu - 2. * pforc(:,:)
137 pforc_e = pforc_e + pforc(:,:) * pu(:,:)**2
138 pdforc_ede = pdforc_ede + 0.
141 IF (lhook) CALL dr_hook(
'CANOPY',1,zhook_handle)
subroutine canopy(KI, KLVL, PZF, PDZ, PHEIGHT, PDENSITY, PCDRAG, PU, PAIRVOL, PSV, PFORC, PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE)