7 pmask,ksize_water,ksize_ice, &
8 pta,pexna,prhoa,psst,pexns,pqa, &
9 prain,psnow,pvmod,pzref,puref,pps, &
10 pqsat,psfth,psftq,pustar, &
11 pcd,pcdn,pch,pce,pri,presa,pz0hsea )
64 USE yomhook
,ONLY : lhook, dr_hook
65 USE parkind1
,ONLY : jprb
74 REAL,
DIMENSION(:),
INTENT(IN) :: pmask
75 INTEGER ,
INTENT(IN) :: ksize_water
76 INTEGER ,
INTENT(IN) :: ksize_ice
78 REAL,
DIMENSION(:),
INTENT(IN) :: pta
79 REAL,
DIMENSION(:),
INTENT(IN) :: pqa
80 REAL,
DIMENSION(:),
INTENT(IN) :: pexna
81 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
82 REAL,
DIMENSION(:),
INTENT(IN) :: pvmod
83 REAL,
DIMENSION(:),
INTENT(IN) :: pzref
84 REAL,
DIMENSION(:),
INTENT(IN) :: puref
85 REAL,
DIMENSION(:),
INTENT(IN) :: psst
86 REAL,
DIMENSION(:),
INTENT(IN) :: pexns
87 REAL,
DIMENSION(:),
INTENT(IN) :: pps
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
117 IF (lhook) CALL dr_hook(
'MODI_COARE30_SEAFLUX:COARE30_SEAFLUX',0,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')
158 IF (lhook) CALL dr_hook(
'MODI_COARE30_SEAFLUX:COARE30_SEAFLUX',1,zhook_handle)
165 INTEGER,
INTENT(IN),
DIMENSION(:) :: kmask
166 CHARACTER(LEN=1),
INTENT(IN) :: ytype
168 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ta
169 REAL,
DIMENSION(SIZE(KMASK)) :: zw_qa
170 REAL,
DIMENSION(SIZE(KMASK)) :: zw_exna
171 REAL,
DIMENSION(SIZE(KMASK)) :: zw_rhoa
172 REAL,
DIMENSION(SIZE(KMASK)) :: zw_vmod
173 REAL,
DIMENSION(SIZE(KMASK)) :: zw_zref
174 REAL,
DIMENSION(SIZE(KMASK)) :: zw_uref
175 REAL,
DIMENSION(SIZE(KMASK)) :: zw_sst
176 REAL,
DIMENSION(SIZE(KMASK)) :: zw_exns
177 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ps
178 REAL,
DIMENSION(SIZE(KMASK)) :: zw_rain
179 REAL,
DIMENSION(SIZE(KMASK)) :: zw_snow
181 REAL,
DIMENSION(SIZE(KMASK)) :: zw_z0sea
184 REAL,
DIMENSION(SIZE(KMASK)) :: zw_sfth
185 REAL,
DIMENSION(SIZE(KMASK)) :: zw_sftq
186 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ustar
189 REAL,
DIMENSION(SIZE(KMASK)) :: zw_qsat
190 REAL,
DIMENSION(SIZE(KMASK)) :: zw_cd
191 REAL,
DIMENSION(SIZE(KMASK)) :: zw_cdn
192 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ch
193 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ce
194 REAL,
DIMENSION(SIZE(KMASK)) :: zw_ri
195 REAL,
DIMENSION(SIZE(KMASK)) :: zw_resa
196 REAL,
DIMENSION(SIZE(KMASK)) :: zw_z0hsea
198 REAL(KIND=JPRB) :: zhook_handle
200 IF (lhook) CALL dr_hook(
'COARE30_SEAFLUX:TREAT_SURF',0,zhook_handle)
203 zw_ta(jj) = pta(kmask(jj))
204 zw_qa(jj) = pqa(kmask(jj))
205 zw_exna(jj) = pexna(kmask(jj))
206 zw_rhoa(jj) = prhoa(kmask(jj))
207 zw_vmod(jj) = pvmod(kmask(jj))
208 zw_zref(jj) = pzref(kmask(jj))
209 zw_uref(jj) = puref(kmask(jj))
210 zw_sst(jj) = psst(kmask(jj))
211 zw_exns(jj) = pexns(kmask(jj))
212 zw_ps(jj) = pps(kmask(jj))
213 zw_rain(jj) = prain(kmask(jj))
214 zw_snow(jj) = psnow(kmask(jj))
215 zw_z0sea(jj)= s%XZ0(kmask(jj))
228 zw_z0hsea(:) = xundef
233 zw_z0sea,zw_ta,zw_exna,zw_rhoa,zw_sst,zw_exns,&
234 zw_qa,zw_vmod,zw_zref,zw_uref,zw_ps,zw_qsat,zw_sfth,zw_sftq,zw_ustar,&
235 zw_cd,zw_cdn,zw_ch,zw_ce,zw_ri,zw_resa,zw_rain,zw_z0hsea)
237 ELSEIF ( (ytype==
'I') .AND. (.NOT. s%LHANDLE_SIC))
THEN
239 CALL
ice_sea_flux(zw_z0sea,zw_ta,zw_exna,zw_rhoa,zw_sst,zw_exns,zw_qa,zw_rain,zw_snow, &
240 zw_vmod,zw_zref,zw_uref,zw_ps,zw_qsat,zw_sfth,zw_sftq,zw_ustar,zw_cd, &
241 zw_cdn,zw_ch,zw_ri,zw_resa,zw_z0hsea)
246 s%XZ0(kmask(jj)) = zw_z0sea(jj)
247 psfth(kmask(jj)) = zw_sfth(jj)
248 psftq(kmask(jj)) = zw_sftq(jj)
249 pustar(kmask(jj)) = zw_ustar(jj)
250 pqsat(kmask(jj)) = zw_qsat(jj)
251 pcd(kmask(jj)) = zw_cd(jj)
252 pcdn(kmask(jj)) = zw_cdn(jj)
253 pch(kmask(jj)) = zw_ch(jj)
254 pce(kmask(jj)) = zw_ce(jj)
255 pri(kmask(jj)) = zw_ri(jj)
256 presa(kmask(jj)) = zw_resa(jj)
257 pz0hsea(kmask(jj)) = zw_z0hsea(jj)
259 IF (lhook) CALL dr_hook(
'COARE30_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 treat_surf(KMASK, YTYPE)
subroutine coare30_seaflux(S, PMASK, KSIZE_WATER, KSIZE_ICE, PTA, PEXNA, PRHOA, PSST, PEXNS, PQA, PRAIN, PSNOW, PVMOD, PZREF, PUREF, PPS, PQSAT, PSFTH, PSFTQ, PUSTAR, PCD, PCDN, PCH, PCE, PRI, PRESA, PZ0HSEA)
subroutine coare30_flux(S, PZ0SEA, PTA, PEXNA, PRHOA, PSST, PEXNS, PQA, PVMOD, PZREF, PUREF, PPS, PQSAT, PSFTH, PSFTQ, PUSTAR, PCD, PCDN, PCH, PCE, PRI, PRESA, PRAIN, PZ0HSEA)