43 USE yomhook
,ONLY : lhook, dr_hook
44 USE parkind1
,ONLY : jprb
53 INTEGER,
INTENT(IN) :: ki
54 INTEGER,
INTENT(IN) :: klvl
55 REAL,
DIMENSION(KI),
INTENT(IN) :: ph
56 REAL,
DIMENSION(KI),
INTENT(IN) :: pzforc
57 REAL,
DIMENSION(KI,KLVL),
INTENT(INOUT) :: pz
58 REAL,
DIMENSION(KI,KLVL),
INTENT(INOUT) :: pzf
59 REAL,
DIMENSION(KI,KLVL),
INTENT(INOUT) :: pdz
60 REAL,
DIMENSION(KI,KLVL),
INTENT(INOUT) :: pdzf
65 INTEGER,
DIMENSION(KI) :: il
66 INTEGER,
DIMENSION(KI,KLVL) :: ilevel
74 REAL(KIND=JPRB) :: zhook_handle
78 IF (lhook) CALL dr_hook(
'CANOPY_GRID_UPDATE',0,zhook_handle)
79 IF(all(pz(:,klvl)==pzforc(:)) .AND. lhook) CALL dr_hook(
'CANOPY_GRID_UPDATE',1,zhook_handle)
80 IF(all(pz(:,klvl)==pzforc(:)))
RETURN
87 pz(:,klvl) = pzforc(:)
96 IF( pzforc(ji) > pzf(ji,jlayer+1) + 0.25 * pdz(ji,jlayer) .AND. &
97 pz(ji,jlayer) < pzforc(ji) ) ilevel(ji,jlayer) = jlayer
100 il(ji)=maxval(ilevel(ji,1:klvl-1))
102 icount = klvl-il(ji)-1
105 zztop = pzf(ji,il(ji)+1)
106 zdz = 2. * ( pz(ji,klvl)-zztop ) / ( 2*icount+1 )
108 pz(ji,jlayer+il(ji)) = zztop + (jlayer-0.5) * zdz
124 IF(pzf(ji,klvl-1) < ph(ji) )
THEN
128 pzf(ji,klvl-1) = ph(ji)
132 pz(ji,klvl-2) = 0.5 * ( pzf(ji,klvl-2) + pzf(ji,klvl-1) )
133 pz(ji,klvl-1) = ( 2.* pzf(ji,klvl-1) + pz(ji,klvl) ) /3.
142 IF (lhook) CALL dr_hook(
'CANOPY_GRID_UPDATE',1,zhook_handle)
subroutine canopy_grid_update(KI, KLVL, PH, PZFORC, PZ, PZF, PDZ, PDZF)
subroutine canopy_grid(KI, KLVL, PZ, PZF, PDZ, PDZF)