7 pta,pexna,prhoa,psst,psss,pexns,pqa, &
8 prain,psnow,pvmod,pzref,puref,pps,ppa, &
9 pichce,oprecip,opwebb,opwg,kz0, &
10 ohandle_sic,pqsat,psfth,psftq,pustar,pcd,&
11 pcdn,pch,pce,pri,presa,pz0hsea, &
12 opertflux,ppertflux,hecume )
63 USE yomhook
,ONLY : lhook, dr_hook
64 USE parkind1
,ONLY : jprb
70 REAL,
DIMENSION(:),
INTENT(IN) :: pmask
71 INTEGER ,
INTENT(IN) :: ksize_water
72 INTEGER ,
INTENT(IN) :: ksize_ice
74 REAL,
DIMENSION(:),
INTENT(IN) :: pta
75 REAL,
DIMENSION(:),
INTENT(IN) :: pqa
76 REAL,
DIMENSION(:),
INTENT(IN) :: pexna
77 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
78 REAL,
DIMENSION(:),
INTENT(IN) :: pvmod
79 REAL,
DIMENSION(:),
INTENT(IN) :: pzref
80 REAL,
DIMENSION(:),
INTENT(IN) :: puref
81 REAL,
DIMENSION(:),
INTENT(IN) :: psst
82 REAL,
DIMENSION(:),
INTENT(IN) :: psss
83 REAL,
DIMENSION(:),
INTENT(IN) :: pexns
84 REAL,
DIMENSION(:),
INTENT(IN) :: pps
85 REAL,
DIMENSION(:),
INTENT(IN) :: ppa
86 REAL,
DIMENSION(:),
INTENT(IN) :: prain
87 REAL,
DIMENSION(:),
INTENT(IN) :: psnow
88 REAL,
DIMENSION(:),
INTENT(IN) :: ppertflux
90 REAL,
INTENT(IN) :: pichce
91 LOGICAL,
INTENT(IN) :: oprecip
92 LOGICAL,
INTENT(IN) :: opwebb
93 LOGICAL,
INTENT(IN) :: opwg
94 LOGICAL,
INTENT(IN) :: opertflux
95 INTEGER,
INTENT(IN) :: kz0
96 LOGICAL,
INTENT(IN) :: ohandle_sic
97 CHARACTER(LEN=6),
INTENT(IN) :: hecume
100 REAL,
DIMENSION(:),
INTENT(INOUT) :: pz0sea
103 REAL,
DIMENSION(:),
INTENT(OUT) :: psfth
104 REAL,
DIMENSION(:),
INTENT(OUT) :: psftq
105 REAL,
DIMENSION(:),
INTENT(OUT) :: pustar
108 REAL,
DIMENSION(:),
INTENT(OUT) :: pqsat
109 REAL,
DIMENSION(:),
INTENT(OUT) :: pcd
110 REAL,
DIMENSION(:),
INTENT(OUT) :: pcdn
111 REAL,
DIMENSION(:),
INTENT(OUT) :: pch
112 REAL,
DIMENSION(:),
INTENT(OUT) :: pce
113 REAL,
DIMENSION(:),
INTENT(OUT) :: pri
114 REAL,
DIMENSION(:),
INTENT(OUT) :: presa
115 REAL,
DIMENSION(:),
INTENT(OUT) :: pz0hsea
119 INTEGER,
DIMENSION(KSIZE_WATER) :: ir_water
120 INTEGER,
DIMENSION(KSIZE_ICE) :: ir_ice
122 REAL(KIND=JPRB) :: zhook_handle
128 IF (lhook) CALL dr_hook(
'ECUME_SEAFLUX',0,zhook_handle)
135 IF (ohandle_sic)
THEN
137 DO jj=1,
SIZE(psst(:))
143 DO jj=1,
SIZE(psst(:))
144 IF (pmask(jj) >=0.0 )
THEN
159 IF (ksize_water > 0 ) CALL
treat_surf(ir_water,
'W')
166 IF ( (ksize_ice > 0 ) .AND. (.NOT. ohandle_sic) ) CALL
treat_surf(ir_ice,
'I')
169 IF (lhook) CALL dr_hook(
'ECUME_SEAFLUX',1,zhook_handle)
178 INTEGER,
INTENT(IN),
DIMENSION(:) :: kmask
179 CHARACTER(LEN=1),
INTENT(IN) :: ytype
181 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ta
182 REAL,
DIMENSION(SIZE(KMASK)) :: zw_qa
183 REAL,
DIMENSION(SIZE(KMASK)) :: zw_exna
184 REAL,
DIMENSION(SIZE(KMASK)) :: zw_rhoa
185 REAL,
DIMENSION(SIZE(KMASK)) :: zw_vmod
186 REAL,
DIMENSION(SIZE(KMASK)) :: zw_zref
187 REAL,
DIMENSION(SIZE(KMASK)) :: zw_uref
188 REAL,
DIMENSION(SIZE(KMASK)) :: zw_sst
189 REAL,
DIMENSION(SIZE(KMASK)) :: zw_sss
190 REAL,
DIMENSION(SIZE(KMASK)) :: zw_exns
191 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ps
192 REAL,
DIMENSION(SIZE(KMASK)) :: zw_pa
193 REAL,
DIMENSION(SIZE(KMASK)) :: zw_rain
194 REAL,
DIMENSION(SIZE(KMASK)) :: zw_snow
195 REAL,
DIMENSION(SIZE(KMASK)) :: zw_pertflux
197 REAL,
DIMENSION(SIZE(KMASK)) :: zw_z0sea
200 REAL,
DIMENSION(SIZE(KMASK)) :: zw_sfth
201 REAL,
DIMENSION(SIZE(KMASK)) :: zw_sftq
202 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ustar
205 REAL,
DIMENSION(SIZE(KMASK)) :: zw_qsat
206 REAL,
DIMENSION(SIZE(KMASK)) :: zw_cd
207 REAL,
DIMENSION(SIZE(KMASK)) :: zw_cdn
208 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ch
209 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ce
210 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ri
211 REAL,
DIMENSION(SIZE(KMASK)) :: zw_resa
212 REAL,
DIMENSION(SIZE(KMASK)) :: zw_z0hsea
214 REAL(KIND=JPRB) :: zhook_handle
216 IF (lhook) CALL dr_hook(
'ECUME_SEAFLUX:TREAT_SURF',0,zhook_handle)
218 zw_ta(jj) = pta(kmask(jj))
219 zw_qa(jj) = pqa(kmask(jj))
220 zw_exna(jj) = pexna(kmask(jj))
221 zw_rhoa(jj) = prhoa(kmask(jj))
222 zw_vmod(jj) = pvmod(kmask(jj))
223 zw_zref(jj) = pzref(kmask(jj))
224 zw_uref(jj) = puref(kmask(jj))
225 zw_sst(jj) = psst(kmask(jj))
226 zw_sss(jj) = psss(kmask(jj))
227 zw_exns(jj) = pexns(kmask(jj))
228 zw_ps(jj) = pps(kmask(jj))
229 zw_pa(jj) = ppa(kmask(jj))
230 zw_rain(jj) = prain(kmask(jj))
231 zw_snow(jj) = psnow(kmask(jj))
232 zw_pertflux(jj) = ppertflux(kmask(jj))
233 zw_z0sea(jj)= pz0sea(kmask(jj))
246 zw_z0hsea(:) = xundef
250 IF(hecume==
'ECUME6')
THEN
252 CALL
ecumev6_flux(zw_z0sea,zw_ta,zw_exna,zw_rhoa,zw_sst,zw_sss,zw_exns, &
253 zw_qa,zw_vmod,zw_zref,zw_uref,zw_ps,zw_pa,pichce,oprecip,opwebb,&
254 zw_qsat,zw_sfth,zw_sftq,zw_ustar,zw_cd,zw_cdn,zw_ch,zw_ce, &
255 zw_ri,zw_resa,zw_rain,kz0,zw_z0hsea,opertflux,zw_pertflux)
258 CALL
ecume_flux(zw_z0sea,zw_ta,zw_exna,zw_rhoa,zw_sst,zw_exns, &
259 zw_qa,zw_vmod,zw_zref,zw_uref,zw_ps,pichce,oprecip,opwebb,opwg,&
260 zw_qsat,zw_sfth,zw_sftq,zw_ustar,zw_cd,zw_cdn,zw_ch,zw_ce, &
261 zw_ri,zw_resa,zw_rain,zw_z0hsea,opertflux,zw_pertflux)
264 ELSEIF ( (ytype==
'I') .AND. (.NOT. ohandle_sic))
THEN
266 CALL
ice_sea_flux(zw_z0sea,zw_ta,zw_exna,zw_rhoa,zw_sst,zw_exns,zw_qa,zw_rain,zw_snow, &
267 zw_vmod,zw_zref,zw_uref,zw_ps,zw_qsat,zw_sfth,zw_sftq,zw_ustar,zw_cd, &
268 zw_cdn,zw_ch,zw_ri,zw_resa,zw_z0hsea)
273 pqsat(kmask(jj)) = zw_qsat(jj)
274 pz0sea(kmask(jj))= zw_z0sea(jj)
275 pustar(kmask(jj))= zw_ustar(jj)
276 psfth(kmask(jj)) = zw_sfth(jj)
277 psftq(kmask(jj)) = zw_sftq(jj)
278 pcd(kmask(jj)) = zw_cd(jj)
279 pcdn(kmask(jj)) = zw_cdn(jj)
280 pch(kmask(jj)) = zw_ch(jj)
281 pce(kmask(jj)) = zw_ce(jj)
282 pri(kmask(jj)) = zw_ri(jj)
283 presa(kmask(jj)) = zw_resa(jj)
284 pz0hsea(kmask(jj))= zw_z0hsea(jj)
286 IF (lhook) CALL dr_hook(
'ECUME_SEAFLUX:TREAT_SURF',1,zhook_handle)
subroutine ice_sea_flux(PZ0ICE, PTA, PEXNA, PRHOA, PTICE, PEXNS, PQA, PRR, PRS, PVMOD, PZREF, PUREF, PPS, PQSAT, PSFTH, PSFTQ, PUSTAR, PCD, PCDN, PCH, PRI, PRESA, PZ0HICE)
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 treat_surf(KMASK, YTYPE)
subroutine ecume_seaflux(PZ0SEA, PMASK, KSIZE_WATER, KSIZE_ICE, PTA, PEXNA, PRHOA, PSST, PSSS, PEXNS, PQA, PRAIN, PSNOW, PVMOD, PZREF, PUREF, PPS, PPA, PICHCE, OPRECIP, OPWEBB, OPWG, KZ0, OHANDLE_SIC, PQSAT, PSFTH, PSFTQ, PUSTAR, PCD, PCDN, PCH, PCE, PRI, PRESA, PZ0HSEA, OPERTFLUX, PPERTFLUX, HECUME)