7 pta, pexna, prhoa, psst, pexns, pqa, prr, prs, &
8 ptt, pvmod, pzref, puref, &
9 pps, ohandle_sic, pqsat, &
10 psfth, psftq, pustar, &
11 pcd, pcdn, pch, pri, presa, pz0hsea )
64 USE modi_surface_aero_cond
66 USE modi_surface_cdch_1darp
67 USE modi_wind_threshold
71 USE modd_surf_atm, ONLY : ldrag_coef_arp, xvchrnk, xvz0cm, lvziustar0_arp, xvziustar0, &
72 lrrgust_arp, xrrscale, xrrgamma, xutilgust, xrzhz0m
77 USE yomhook
,ONLY : lhook, dr_hook
78 USE parkind1
,ONLY : jprb
85 REAL,
DIMENSION(:),
INTENT(IN) :: pta
86 REAL,
DIMENSION(:),
INTENT(IN) :: pqa
87 REAL,
DIMENSION(:),
INTENT(IN) :: pexna
88 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
89 REAL,
DIMENSION(:),
INTENT(IN) :: pvmod
90 REAL,
DIMENSION(:),
INTENT(IN) :: pzref
91 REAL,
DIMENSION(:),
INTENT(IN) :: puref
92 REAL,
DIMENSION(:),
INTENT(IN) :: psst
93 REAL,
DIMENSION(:),
INTENT(IN) :: pexns
94 REAL,
DIMENSION(:),
INTENT(IN) :: pps
95 LOGICAL,
INTENT(IN) :: ohandle_sic
96 REAL,
DIMENSION(:),
INTENT(IN) :: prr
97 REAL,
DIMENSION(:),
INTENT(IN) :: prs
98 REAL,
INTENT(IN) :: ptt
100 REAL,
DIMENSION(:),
INTENT(INOUT) :: pz0sea
104 REAL,
DIMENSION(:),
INTENT(OUT) :: psfth
105 REAL,
DIMENSION(:),
INTENT(OUT) :: psftq
106 REAL,
DIMENSION(:),
INTENT(OUT) :: pustar
109 REAL,
DIMENSION(:),
INTENT(OUT) :: pqsat
110 REAL,
DIMENSION(:),
INTENT(OUT) :: pcd
111 REAL,
DIMENSION(:),
INTENT(OUT) :: pcdn
112 REAL,
DIMENSION(:),
INTENT(OUT) :: pch
113 REAL,
DIMENSION(:),
INTENT(OUT) :: pri
114 REAL,
DIMENSION(:),
INTENT(OUT) :: presa
115 REAL,
DIMENSION(:),
INTENT(OUT) :: pz0hsea
121 REAL,
DIMENSION(SIZE(PTA)) :: zvmod
122 REAL,
DIMENSION(SIZE(PTA)) :: zustar2
123 REAL,
DIMENSION(SIZE(PTA)) :: zac
124 REAL,
DIMENSION(SIZE(PTA)) :: zra
125 REAL,
DIMENSION(SIZE(PTA)) :: zdircoszw
126 REAL,
DIMENSION(SIZE(PTA)) :: zfp
127 REAL,
DIMENSION(SIZE(PTA)) :: zrrcor
128 REAL,
DIMENSION(SIZE(PTA)) :: zcharn
130 REAL(KIND=JPRB) :: zhook_handle
137 IF (lhook) CALL dr_hook(
'WATER_FLUX',0,zhook_handle)
154 pqsat(:) =
qsat(psst(:),pps(:))
165 IF(ccharnock==
'OLD')
THEN
169 zcharn(:) = max(0.011,min(0.018,0.011+0.007*(zvmod(:)-10.)/8.))
180 CALL
surface_ri(psst,pqsat,pexns,pexna,pta,pqa, &
181 pzref, puref, zdircoszw,pvmod,pri)
186 IF (lvziustar0_arp)
THEN
187 pz0hsea(:)=min(pz0sea(:),pz0sea(:)*xrzhz0m)
192 IF (.NOT.ohandle_sic )
THEN
193 WHERE (psst(:) < ptt)
201 IF (ldrag_coef_arp)
THEN
204 pqa, pqsat, pcd, pcdn, pch )
206 zra(:) = 1. / ( pch(:) * zvmod(:) )
210 CALL
surface_cd(pri, pzref, puref, pz0sea, pz0hsea, pcd, pcdn)
221 zustar2(:) = pcd(:)*zvmod(:)*zvmod(:)
223 pz0sea(:) = zcharn(:) * zustar2(:) / xg + xvz0cm * pcd(:) / pcdn(:)
225 IF (lvziustar0_arp .AND. xvziustar0>0.)
THEN
226 pz0hsea(:)=pz0sea(:)*exp(-sqrt(zustar2(:))*xvziustar0)
231 IF (.NOT.ohandle_sic )
THEN
232 WHERE (psst(:) < ptt)
242 IF (.NOT.ldrag_coef_arp)
THEN
246 IF (lrrgust_arp)
THEN
247 zfp(:)=max(0.0,prr(:)+prs(:))
248 zrrcor(:)=sqrt(1.0+((((zfp(:)/(zfp(:)+xrrscale))**xrrgamma)*xutilgust)**2) &
249 /(pcd(:)*zvmod(:)**2))
263 psfth(:) = xcpd * prhoa(:) * pch(:) * zvmod(:) * ( psst(:) -pta(:) * pexns(:) / pexna(:) ) / pexns(:)
264 psftq(:) = prhoa(:) * pch(:) * zvmod(:) * ( pqsat(:)-pqa(:) )
265 pustar(:) = sqrt(zustar2(:))
267 IF (lhook) CALL dr_hook(
'WATER_FLUX',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 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)
subroutine water_flux(PZ0SEA, PTA, PEXNA, PRHOA, PSST, PEXNS, PQA, PRR, PRS, PTT, PVMOD, PZREF, PUREF, PPS, OHANDLE_SIC, PQSAT, PSFTH, PSFTQ, PUSTAR, PCD, PCDN, PCH, PRI, PRESA, PZ0HSEA)