7 PTA,PEXNA,PRHOA,PSST,PEXNS,PQA, &
8 PRAIN,PSNOW,PVMOD,PZREF,PUREF,PPS,PPA, &
9 PQSAT,PSFTH,PSFTQ,PUSTAR,PCD, &
10 PCDN,PCH,PCE,PRI,PRESA,PZ0HSEA )
73 REAL,
DIMENSION(:),
INTENT(IN) :: PMASK
74 INTEGER ,
INTENT(IN) :: KSIZE_WATER
75 INTEGER ,
INTENT(IN) :: KSIZE_ICE
77 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
78 REAL,
DIMENSION(:),
INTENT(IN) :: PQA
79 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNA
80 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
81 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
82 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF
83 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
84 REAL,
DIMENSION(:),
INTENT(IN) :: PSST
85 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNS
86 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
87 REAL,
DIMENSION(:),
INTENT(IN) :: PPA
88 REAL,
DIMENSION(:),
INTENT(IN) :: PRAIN
89 REAL,
DIMENSION(:),
INTENT(IN) :: PSNOW
92 REAL,
DIMENSION(:),
INTENT(OUT) :: PSFTH
93 REAL,
DIMENSION(:),
INTENT(OUT) :: PSFTQ
94 REAL,
DIMENSION(:),
INTENT(OUT) :: PUSTAR
97 REAL,
DIMENSION(:),
INTENT(OUT) :: PQSAT
98 REAL,
DIMENSION(:),
INTENT(OUT) :: PCD
99 REAL,
DIMENSION(:),
INTENT(OUT) :: PCDN
100 REAL,
DIMENSION(:),
INTENT(OUT) :: PCH
101 REAL,
DIMENSION(:),
INTENT(OUT) :: PCE
102 REAL,
DIMENSION(:),
INTENT(OUT) :: PRI
103 REAL,
DIMENSION(:),
INTENT(OUT) :: PRESA
104 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0HSEA
108 INTEGER,
DIMENSION(KSIZE_WATER) :: IR_WATER
109 INTEGER,
DIMENSION(KSIZE_ICE) :: IR_ICE
111 REAL(KIND=JPRB) :: ZHOOK_HANDLE
124 IF (s%LHANDLE_SIC)
THEN 126 DO jj=1,
SIZE(psst(:))
132 DO jj=1,
SIZE(psst(:))
133 IF (pmask(jj) >=0.0 )
THEN 148 IF (ksize_water > 0 )
CALL treat_surf(ir_water,
'W')
155 IF ( (ksize_ice > 0 ) .AND. (.NOT. s%LHANDLE_SIC) )
CALL treat_surf(ir_ice,
'I')
167 INTEGER,
INTENT(IN),
DIMENSION(:) :: KMASK
168 CHARACTER(LEN=1),
INTENT(IN) :: YTYPE
170 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_TA
171 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_QA
172 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_EXNA
173 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_RHOA
174 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_VMOD
175 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_ZREF
176 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_UREF
177 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_SST
178 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_SSS
179 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_EXNS
180 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_PS
181 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_PA
182 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_RAIN
183 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_SNOW
184 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_PERTFLUX
186 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_Z0SEA
189 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_SFTH
190 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_SFTQ
191 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_USTAR
194 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_QSAT
195 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_CD
196 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_CDN
197 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_CH
198 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_CE
199 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_RI
200 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_RESA
201 REAL,
DIMENSION(SIZE(KMASK)) :: ZW_Z0HSEA
203 REAL(KIND=JPRB) :: ZHOOK_HANDLE
205 IF (
lhook)
CALL dr_hook(
'ECUME_SEAFLUX:TREAT_SURF',0,zhook_handle)
207 zw_ta(jj) = pta(kmask(jj))
208 zw_qa(jj) = pqa(kmask(jj))
209 zw_exna(jj) = pexna(kmask(jj))
210 zw_rhoa(jj) = prhoa(kmask(jj))
211 zw_vmod(jj) = pvmod(kmask(jj))
212 zw_zref(jj) = pzref(kmask(jj))
213 zw_uref(jj) = puref(kmask(jj))
214 zw_sst(jj) = psst(kmask(jj))
215 zw_sss(jj) = s%XSSS(kmask(jj))
216 zw_exns(jj) = pexns(kmask(jj))
217 zw_ps(jj) = pps(kmask(jj))
218 zw_pa(jj) = ppa(kmask(jj))
219 zw_rain(jj) = prain(kmask(jj))
220 zw_snow(jj) = psnow(kmask(jj))
221 zw_pertflux(jj) = s%XPERTFLUX(kmask(jj))
222 zw_z0sea(jj)= s%XZ0(kmask(jj))
239 IF(s%CSEA_FLUX==
'ECUME6')
THEN 241 CALL ecumev6_flux(zw_z0sea,zw_ta,zw_exna,zw_rhoa,zw_sst,zw_sss,zw_exns, &
242 zw_qa,zw_vmod,zw_zref,zw_uref,zw_ps,zw_pa,s%XICHCE,s%LPRECIP,s%LPWEBB,&
243 zw_qsat,zw_sfth,zw_sftq,zw_ustar,zw_cd,zw_cdn,zw_ch,zw_ce, &
244 zw_ri,zw_resa,zw_rain,s%NZ0,zw_z0hsea,s%LPERTFLUX,zw_pertflux)
247 CALL ecume_flux(zw_z0sea,zw_ta,zw_exna,zw_rhoa,zw_sst,zw_exns, &
248 zw_qa,zw_vmod,zw_zref,zw_uref,zw_ps,s%XICHCE,s%LPRECIP,s%LPWEBB,s%LPWG,&
249 zw_qsat,zw_sfth,zw_sftq,zw_ustar,zw_cd,zw_cdn,zw_ch,zw_ce, &
250 zw_ri,zw_resa,zw_rain,zw_z0hsea,s%LPERTFLUX,zw_pertflux)
253 ELSEIF ( (ytype==
'I') .AND. (.NOT. s%LHANDLE_SIC))
THEN 255 CALL ice_sea_flux(zw_z0sea,zw_ta,zw_exna,zw_rhoa,zw_sst,zw_exns,zw_qa,zw_rain,zw_snow, &
256 zw_vmod,zw_zref,zw_uref,zw_ps,zw_qsat,zw_sfth,zw_sftq,zw_ustar,zw_cd, &
257 zw_cdn,zw_ch,zw_ri,zw_resa,zw_z0hsea)
262 pqsat(kmask(jj)) = zw_qsat(jj)
263 s%XZ0(kmask(jj))= zw_z0sea(jj)
264 pustar(kmask(jj))= zw_ustar(jj)
265 psfth(kmask(jj)) = zw_sfth(jj)
266 psftq(kmask(jj)) = zw_sftq(jj)
267 pcd(kmask(jj)) = zw_cd(jj)
268 pcdn(kmask(jj)) = zw_cdn(jj)
269 pch(kmask(jj)) = zw_ch(jj)
270 pce(kmask(jj)) = zw_ce(jj)
271 pri(kmask(jj)) = zw_ri(jj)
272 presa(kmask(jj)) = zw_resa(jj)
273 pz0hsea(kmask(jj))= zw_z0hsea(jj)
275 IF (
lhook)
CALL dr_hook(
'ECUME_SEAFLUX:TREAT_SURF',1,zhook_handle)
subroutine ecumev6_flux(PZ0SEA, PTA, PEXNA, PRHOA, PSST, PSSS, PEXNS, PQA, PVMOD, PZREF, PUREF, PPS, PPA, PICHCE, OPRECIP, OPWEBB, PQSAT, PSFTH, PSFTQ, PUSTAR, PCD, PCDN, PCH, PCE, PRI, PRESA, PRAIN, KZ0, PZ0HSEA, OPERTFLUX, PPERTFLUX)
subroutine ecume_flux(PZ0SEA, PTA, PEXNA, PRHOA, PSST, PEXNS, PQA, PVMOD, PZREF, PUREF, PPS, PICHCE, OPRECIP, OPWEBB, OPWG, PQSAT, PSFTH, PSFTQ, PUSTAR, PCD, PCDN, PCH, PCE, PRI, PRESA, PRAIN, PZ0HSEA, OPERTFLUX, PPERTFLUX)
subroutine ecume_seaflux(S, PMASK, KSIZE_WATER, KSIZE_ICE, PTA, PEXNA, PRHOA, PSST, PEXNS, PQA, PRAIN, PSNOW, PVMOD, PZREF, PUREF, PPS, PPA, PQSAT, PSFTH, PSFTQ, PUSTAR, PCD, PCDN, PCH, PCE, PRI, PRESA, PZ0HSEA)
subroutine treat_surf(KMASK, YTYPE)
subroutine ice_sea_flux(PZ0ICE,