61 USE modi_wind_threshold
73 REAL,
DIMENSION(:),
INTENT(IN) :: PRI
74 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
75 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF
77 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
81 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0
82 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0H
84 REAL,
DIMENSION(:),
INTENT(OUT) :: PAC
85 REAL,
DIMENSION(:),
INTENT(OUT) :: PRA
86 REAL,
DIMENSION(:),
INTENT(OUT) :: PCH
91 REAL,
DIMENSION(SIZE(PRI)) :: ZZ0, ZZ0H, ZMU, &
92 ZFH, ZCHSTAR, ZPH, ZCDN, &
93 ZSTA, ZDI, ZWORK1, ZWORK2, ZWORK3
94 REAL,
DIMENSION(SIZE(PRI)) :: ZVMOD
97 REAL(KIND=JPRB) :: ZHOOK_HANDLE
100 REAL :: X, CHSTAR, PH
101 chstar(x) = 3.2165 + 4.3431*x + 0.5360*x*x - 0.0781*x*x*x
102 ph(x) = 0.5802 - 0.1571*x + 0.0327*x*x - 0.0026*x*x*x
109 IF (
lhook)
CALL dr_hook(
'SURFACE_AERO_COND',0,zhook_handle)
114 zz0(jj) = min(pz0(jj),puref(jj)*0.5)
115 zz0h(jj) = min(zz0(jj),pz0h(jj))
116 zz0h(jj) = min(zz0h(jj),pzref(jj)*0.5)
118 zwork1(jj)=log( puref(jj)/zz0(jj) )
119 zwork2(jj)=pzref(jj)/zz0h(jj)
120 zwork3(jj)=zvmod(jj)*zvmod(jj)
122 zmu(jj) = max( log( zz0(jj)/zz0h(jj) ), 0.0 )
123 zfh(jj) = zwork1(jj) / log(zwork2(jj))
125 zchstar(jj) = chstar(zmu(jj))
126 zph(jj) = ph(zmu(jj))
129 zcdn(jj) = (
xkarman/zwork1(jj))**2.
132 zsta(jj) = pri(jj)*zwork3(jj)
135 IF ( pri(jj) < 0.0 )
THEN 136 zdi(jj) = 1. / ( zvmod(jj) &
137 +zchstar(jj)*zcdn(jj)*15. &
138 *zwork2(jj)**zph(jj) &
139 *zfh(jj) * sqrt(-zsta(jj)) &
141 pac(jj) = zcdn(jj)*(zvmod(jj)-15.* zsta(jj)*zdi(jj))*zfh(jj)
144 zdi(jj) = sqrt(zwork3(jj) + 5. * zsta(jj) )
145 pac(jj) = zcdn(jj)*zvmod(jj)/(1.+15.*zsta(jj)*zdi(jj) &
146 / zwork3(jj) /zvmod(jj) )*zfh(jj)
149 pra(jj) = 1. / pac(jj)
151 pch(jj) = 1. / (pra(jj) * zvmod(jj))
154 IF (
lhook)
CALL dr_hook(
'SURFACE_AERO_COND',1,zhook_handle)
real function, dimension(size(pwind)) wind_threshold(PWIND, PUREF)
subroutine surface_aero_cond(PRI, PZREF, PUREF, PVMOD, PZ0, PZ0H, PAC, PRA, PCH)