7 PZ0, PZ0H, PZ0EFF, PH_VEG, PZREF, &
8 PTC, PTA, PQC, PQA, PUREF, PVMOD, &
9 PEXNA, PEXNS, PDIRCOSZW, PDISPH, &
10 PVELC, PZVMOD, PRI, PRA, &
58 USE modd_isba_par
, ONLY : xlimh
60 USE modi_surface_aero_cond
63 USE modi_wind_threshold
65 USE modi_surface_cdch_1darp
74 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0, PZ0H, PZ0EFF,PH_VEG, PZREF, PUREF, PVMOD
86 REAL,
DIMENSION(:),
INTENT(IN) :: PTC, PTA, PQC, PQA
92 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNA, PEXNS, PDIRCOSZW, PDISPH
99 REAL,
DIMENSION(:),
INTENT(OUT) :: PVELC, PZVMOD, PRI, PRA, PCH, PCDN, PCD
109 LOGICAL,
INTENT(IN) :: LCVEL, LFORC_MEASURE
115 REAL,
DIMENSION(SIZE(PZ0)) :: ZREVEG, ZCD, ZCUR, ZUCUR, ZRATVV, ZAC
116 REAL,
DIMENSION(SIZE(PZ0)) :: ZBN, ZBD, ZCBNVV, ZCBSVV, ZCBUVV, ZREDVV
118 REAL(KIND=JPRB) :: ZHOOK_HANDLE
122 REAL,
PARAMETER :: ZUL = 1.
123 REAL,
PARAMETER :: ZNY = 0.15e-04
124 REAL,
PARAMETER :: ZVELCLIM = 0.1
129 IF (
lhook)
CALL dr_hook(
'PREPS_FOR_MEB_DRAG',0,zhook_handle)
133 zcur(:) = max(pzref(:),xlimh)
134 zucur(:) = max(puref(:),xlimh)
138 IF(lforc_measure)
THEN 140 zcur(:) = pzref(:)-pdisph(:)
141 zucur(:) = puref(:)-pdisph(:)
143 IF (any(zcur<0.0 .OR. zucur<0.0))
THEN 144 print *,
'MAXVAL(PH_VEG)=',maxval(ph_veg)
145 print *,
'MAXVAL(PDISPH)=',maxval(pdisph)
146 print *,
'MINVAL(PZREF)=',minval(pzref)
147 print *,
'MINVAL(PUREF)=',minval(puref)
148 stop
"Forcing height for wind or temperature too low!!" 156 zcur(:) = max(pzref(:),ph_veg(:)-pdisph(:)+xlimh)
157 zucur(:) = max(puref(:),ph_veg(:)-pdisph(:)+xlimh)
164 CALL surface_ri(ptc, pqc, pexns, pexna, pta, pqa, &
165 zcur, zucur, pdircoszw, pvmod, pri )
167 pri(:) = min(pri(:),
xrimax)
174 pqa, pqc, pcd, pcdn, pch )
175 pra(:) = 1. / ( pch(:) * pzvmod(:) )
189 CALL surface_cd(pri, zcur, zucur, pz0eff, pz0h, pcd, pcdn)
198 zratvv(:) = min((ph_veg(:)-pdisph(:))/zcur(:),1.)
202 zcbnvv(:) = alog(1.+(exp(zbn(:))-1.)*zratvv(:))
203 zcbsvv(:) = -(zbn(:)-zbd(:))*zratvv(:)
204 zcbuvv(:) = -alog(1.+(exp(zbn(:)-zbd(:))-1.)*zratvv(:))
207 zredvv(:) = (zcbnvv(:) + zcbsvv(:))/zbd(:)
209 zredvv(:) = (zcbnvv(:) + zcbuvv(:))/zbd(:)
212 pvelc(:) = max(zredvv(:)*pzvmod(:),zvelclim)
216 IF (
lhook)
CALL dr_hook(
'PREPS_FOR_MEB_DRAG',1,zhook_handle)
real function, dimension(size(pwind)) wind_threshold(PWIND, PUREF)
subroutine surface_ri(PTG, PQS, PEXNS, PEXNA, PTA, PQA, PZREF, PUREF, PDIRCOSZW, PVMOD, PRI)
subroutine preps_for_meb_drag(LCVEL, LFORC_MEASURE, PZ0, PZ0H, PZ0EFF, PH_VEG, PZREF, PTC, PTA, PQC, PQA, PUREF, PVMOD, PEXNA, PEXNS, PDIRCOSZW, PDISPH, PVELC, PZVMOD, PRI, PRA, PCH, PCDN, PCD)
subroutine surface_aero_cond(PRI, PZREF, PUREF, PVMOD, PZ0, PZ0H, PAC, PRA, PCH)
subroutine surface_cd(PRI, PZREF, PUREF, PZ0EFF, PZ0H, PCD, PCDN)
subroutine surface_cdch_1darp(PZREF, PZ0EFF, PZ0H, PVMOD, PTA, PTG, PQA, PQS, PCD, PCDN, PCH)