7 HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, &
8 KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, PAZIM, PZREF, PUREF, &
9 PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, &
10 PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, &
11 PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, &
12 PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, &
13 PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST )
62 USE modi_add_forecast_to_date_surf
63 USE modi_diag_inline_watflux_n
67 USE modi_update_rad_water
68 USE modi_interpol_ts_water_mth
79 USE modi_coupling_iceflux_n
87 TYPE(
diag_t),
INTENT(INOUT) :: D
88 TYPE(
diag_t),
INTENT(INOUT) :: DC
91 TYPE(
dst_t),
INTENT(INOUT) :: DST
92 TYPE(
slt_t),
INTENT(INOUT) :: SLT
94 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
95 CHARACTER(LEN=1),
INTENT(IN) :: HCOUPLING
98 REAL,
INTENT(IN) :: PTIMEC
99 INTEGER,
INTENT(IN) :: KYEAR
100 INTEGER,
INTENT(IN) :: KMONTH
101 INTEGER,
INTENT(IN) :: KDAY
102 REAL,
INTENT(IN) :: PTIME
103 INTEGER,
INTENT(IN) :: KI
104 INTEGER,
INTENT(IN) :: KSV
105 INTEGER,
INTENT(IN) :: KSW
106 REAL,
DIMENSION(KI),
INTENT(IN) :: PTSUN
107 REAL,
INTENT(IN) :: PTSTEP
108 REAL,
DIMENSION(KI),
INTENT(IN) :: PZREF
109 REAL,
DIMENSION(KI),
INTENT(IN) :: PUREF
111 REAL,
DIMENSION(KI),
INTENT(IN) :: PTA
112 REAL,
DIMENSION(KI),
INTENT(IN) :: PQA
113 REAL,
DIMENSION(KI),
INTENT(IN) :: PRHOA
114 REAL,
DIMENSION(KI,KSV),
INTENT(IN) :: PSV
117 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN):: HSV
118 REAL,
DIMENSION(KI),
INTENT(IN) :: PU
119 REAL,
DIMENSION(KI),
INTENT(IN) :: PV
120 REAL,
DIMENSION(KI,KSW),
INTENT(IN) :: PDIR_SW
122 REAL,
DIMENSION(KI,KSW),
INTENT(IN) :: PSCA_SW
124 REAL,
DIMENSION(KSW),
INTENT(IN) :: PSW_BANDS
125 REAL,
DIMENSION(KI),
INTENT(IN) :: PZENITH
126 REAL,
DIMENSION(KI),
INTENT(IN) :: PZENITH2
127 REAL,
DIMENSION(KI),
INTENT(IN) :: PAZIM
128 REAL,
DIMENSION(KI),
INTENT(IN) :: PLW
130 REAL,
DIMENSION(KI),
INTENT(IN) :: PPS
131 REAL,
DIMENSION(KI),
INTENT(IN) :: PPA
132 REAL,
DIMENSION(KI),
INTENT(IN) :: PCO2
133 REAL,
DIMENSION(KI),
INTENT(IN) :: PSNOW
134 REAL,
DIMENSION(KI),
INTENT(IN) :: PRAIN
137 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFTH
138 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFTQ
139 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFU
140 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFV
141 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFCO2
142 REAL,
DIMENSION(KI,KSV),
INTENT(OUT):: PSFTS
144 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTRAD
145 REAL,
DIMENSION(KI,KSW),
INTENT(OUT):: PDIR_ALB
146 REAL,
DIMENSION(KI,KSW),
INTENT(OUT):: PSCA_ALB
147 REAL,
DIMENSION(KI),
INTENT(OUT) :: PEMIS
149 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTSURF
150 REAL,
DIMENSION(KI),
INTENT(OUT) :: PZ0
151 REAL,
DIMENSION(KI),
INTENT(OUT) :: PZ0H
152 REAL,
DIMENSION(KI),
INTENT(OUT) :: PQSURF
154 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEW_A_COEF
155 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEW_B_COEF
156 REAL,
DIMENSION(KI),
INTENT(IN) :: PPET_A_COEF
157 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEQ_A_COEF
158 REAL,
DIMENSION(KI),
INTENT(IN) :: PPET_B_COEF
159 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEQ_B_COEF
160 CHARACTER(LEN=2),
INTENT(IN) :: HTEST
164 REAL,
DIMENSION(KI) :: ZEXNA
165 REAL,
DIMENSION(KI) :: ZEXNS
166 REAL,
DIMENSION(KI) :: ZWIND
167 REAL,
DIMENSION(KI) :: ZCD
168 REAL,
DIMENSION(KI) :: ZCDN
169 REAL,
DIMENSION(KI) :: ZCH
170 REAL,
DIMENSION(KI) :: ZRI
171 REAL,
DIMENSION(KI) :: ZHU
172 REAL,
DIMENSION(KI) :: ZRESA_WATER
173 REAL,
DIMENSION(KI) :: ZUSTAR
174 REAL,
DIMENSION(KI) :: ZUSTAR2
175 REAL,
DIMENSION(KI) :: ZZ0H
176 REAL,
DIMENSION(KI) :: ZQSAT
177 REAL,
DIMENSION(KI) :: ZQA
178 REAL,
DIMENSION(KI) :: ZEMIS
179 REAL,
DIMENSION(KI) :: ZTRAD
180 REAL,
DIMENSION(KI) :: ZSFTH_ICE
181 REAL,
DIMENSION(KI) :: ZSFTQ_ICE
182 REAL,
DIMENSION(KI) :: ZWORK
184 REAL,
DIMENSION(KI,KSW) :: ZDIR_ALB
185 REAL,
DIMENSION(KI,KSW) :: ZSCA_ALB
187 REAL :: ZCONVERTFACM0_SLT, ZCONVERTFACM0_DST
188 REAL :: ZCONVERTFACM3_SLT, ZCONVERTFACM3_DST
189 REAL :: ZCONVERTFACM6_SLT, ZCONVERTFACM6_DST
194 INTEGER :: IBEG, IEND
196 LOGICAL :: GHANDLE_SIC = .false.
198 REAL(KIND=JPRB) :: ZHOOK_HANDLE
203 IF (
lhook)
CALL dr_hook(
'COUPLING_WATFLUX_N',0,zhook_handle)
204 IF (htest/=
'OK')
THEN 205 CALL abor1_sfx(
'COUPLING_WATFLUXN: FATAL ERROR DURING ARGUMENT TRANSFER')
238 zwind(:) = sqrt(pu(:)**2+pv(:)**2)
244 zqa(:) = pqa(:) / prhoa(:)
250 w%TTIME%TIME = w%TTIME%TIME + ptstep
258 CALL water_flux(w%XZ0, pta, zexna, prhoa, w%XTS, zexns, zqa, prain, &
259 psnow,
xtt, zwind, pzref, puref, pps, ghandle_sic, &
260 zqsat, psfth, psftq, zustar, zcd, zcdn, zch, zri, &
267 iswb =
SIZE(psw_bands)
270 zdir_alb(:,jswb) = w%XDIR_ALB(:)
271 zsca_alb(:,jswb) = w%XSCA_ALB(:)
284 zqa, prain, psnow, zwind, pzref, puref, &
285 pps, w%XTS,
xtt, zsfth_ice, zsftq_ice )
293 IF (chw%SVW%NBEQ>0)
THEN 295 IF (chw%CCH_DRY_DEP ==
"WES89")
THEN 297 ibeg = chw%SVW%NSV_CHSBEG
298 iend = chw%SVW%NSV_CHSEND
300 CALL ch_dep_water (zresa_water, zustar, pta, ztrad, psv(:,ibeg:iend), &
301 chw%SVW%CSV(ibeg:iend), chw%XDEP(:,1:chw%SVW%NBEQ) )
303 psfts(:,ibeg:iend) = - psv(:,ibeg:iend) * chw%XDEP(:,1:chw%SVW%NBEQ)
304 IF (chw%SVW%NAEREQ > 0 )
THEN 305 ibeg = chw%SVW%NSV_AERBEG
306 iend = chw%SVW%NSV_AEREND
308 CALL ch_aer_dep(psv(:,ibeg:iend),psfts(:,ibeg:iend),zustar,zresa_water,pta,prhoa)
313 ibeg = chw%SVW%NSV_AERBEG
314 iend = chw%SVW%NSV_AEREND
316 psfts(:,ibeg:iend) =0.
317 IF(ibeg.LT.ibeg) psfts(:,ibeg:ibeg) =0.
323 IF (chw%SVW%NDSTEQ>0)
THEN 325 ibeg = chw%SVW%NSV_DSTBEG
326 iend = chw%SVW%NSV_DSTEND
328 CALL dslt_dep(psv(:,ibeg:iend), psfts(:,ibeg:iend), zustar, zresa_water, pta, prhoa, &
330 xmolarweight_dst, zconvertfacm0_dst, zconvertfacm6_dst, zconvertfacm3_dst, &
334 psfts(:,ibeg:iend), &
336 dst%XEMISRADIUS_DST, &
346 IF (chw%SVW%NSLTEQ>0)
THEN 348 ibeg = chw%SVW%NSV_SLTBEG
349 iend = chw%SVW%NSV_SLTEND
351 CALL dslt_dep(psv(:,ibeg:iend), psfts(:,ibeg:iend), zustar, zresa_water, pta, prhoa, &
353 xmolarweight_slt, zconvertfacm0_slt, zconvertfacm6_slt, zconvertfacm3_slt, &
357 psfts(:,ibeg:iend), &
359 slt%XEMISRADIUS_SLT, &
377 zustar2(:) = (zcd(:)*zwind(:)*ppew_b_coef(:)) / &
378 (1.0-prhoa(:)*zcd(:)*zwind(:)*ppew_a_coef(:))
381 zustar2(:) = (zcd(:)*zwind(:)*(2.*ppew_b_coef(:)-zwind(:))) /&
382 (1.0-2.0*prhoa(:)*zcd(:)*zwind(:)*ppew_a_coef(:))
384 zwork(:) = prhoa(:)*ppew_a_coef(:)*zustar2(:) + ppew_b_coef(:)
385 zwork(:) = max(zwork(:),0.)
387 WHERE(ppew_a_coef(:)/= 0.)
388 zustar2(:) = max( ( zwork(:) - ppew_b_coef(:) ) / (prhoa(:)*ppew_a_coef(:)), 0.)
396 psfu(:) = - prhoa(:) * zustar2(:) * pu(:) / zwind(:)
397 psfv(:) = - prhoa(:) * zustar2(:) * pv(:) / zwind(:)
409 ptstep,pta, zqa, ppa, pps, prhoa, pu, pv, pzref, &
410 puref, zcd, zcdn, zch, zri, zhu, zz0h, zqsat, &
411 psfth, psftq, psfu, psfv, pdir_sw, psca_sw, plw, &
412 zdir_alb, zsca_alb, zemis, ztrad, prain, psnow, &
413 zsfth_ice, zsftq_ice )
419 IF (w%LINTERPOL_TS.AND.mod(w%TTIME%TIME,
xday) == 0.)
THEN 429 ptsurf(:) = w%XTS (:)
443 IF (
lhook)
CALL dr_hook(
'COUPLING_WATFLUX_N',1,zhook_handle)
subroutine massflux2momentflux(PFLUX, PRHODREF, PEMISRADIUS, PEMISSIG, KMDE, PCONVERTFACM0, PCONVERTFACM6, PCONVERTFACM3, OVARSIG, ORGFIX)
subroutine diag_inline_watflux_n(DGO, D, DC, W, PTSTEP, PTA, PQA, PPA, PPS, PRHOA, PZONA, PMERA, PHT, PHW, PCD, PCDN, PCH, PRI, PHU, PZ0H, PQSAT, PSFTH, PSFTQ, PSFZON, PSFMER, PDIR_SW, PSCA_SW, PLW, PDIR_ALB, PSCA_ALB, PEMIS, PTRAD, PRAIN, PSNOW, PSFTH_ICE, PSFTQ_ICE)
character(len=3) cimplicit_wind
real, parameter xmolarweight_slt
real, parameter xmolarweight_dst
real, parameter xdensity_dst
subroutine coupling_iceflux_n(KI, PTA, PEXNA, PRHOA, PTICE, PEXNS, PQA, PRAIN, PSNOW, PWIND, PZREF, PUREF, PPS, PTWAT, PTTS, PSFTH, PSFTQ, OHANDLE_SIC, PMASK, PQSAT, PZ0, PUSTAR, PCD, PCDN, PCH, PRI, PRESA, PZ0H)
subroutine update_rad_water(W, PZENITH, PTT, PDIR_ALB_ATMOS, PSCA_ALB_ATMOS, PEMIS_ATMOS, PTRAD)
subroutine ch_aer_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF)
subroutine abor1_sfx(YTEXT)
subroutine water_flux(PZ0SEA,
subroutine coupling_watflux_n(CHW, DGO, D, DC, W, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, PAZIM, PZREF, PUREF, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST)
subroutine interpol_ts_water_mth(W)
subroutine dslt_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF, PEMISSIG, PEMISRADIUS, KPMODE, PDENSITY, PMOLARWEIGHT, PCONVERTFACM0, PCONVERTFACM6, PCONVERTFACM3, OVARSIG, ORGFIX, HVERMOD)
subroutine add_forecast_to_date_surf(KYEAR, KMONTH, KDAY, PSEC)
real, parameter xdensity_slt
subroutine ch_dep_water(PRESA, PUSTAR, PTA, PTRAD, PSV, HSV, PDEP)