61 USE modi_wind_threshold
65 USE yomhook
,ONLY : lhook, dr_hook
66 USE parkind1
,ONLY : jprb
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)