8 ppa, pps, prhoa, pzona, &
9 pmera, pht, phw, pcd, pcdn, pch, pce, pri, phu, &
10 pz0h, pqsat, psfth, psftq, psfzon, psfmer, &
11 pdir_sw, psca_sw, plw, pdir_alb, psca_alb, &
12 pemis, ptrad, prain, psnow, &
13 pcd_ice, pcdn_ice, pch_ice, pce_ice, pri_ice, &
14 pz0_ice, pz0h_ice, pqsat_ice, psfth_ice, psftq_ice, &
15 psfzon_ice, psfmer_ice )
64 USE modi_diag_surf_budget_sea
65 USE modi_diag_surf_budgetc_sea
66 USE modi_diag_cpl_esm_sea
68 USE modi_seaflux_albedo
70 USE yomhook
,ONLY : lhook, dr_hook
71 USE parkind1
,ONLY : jprb
82 REAL,
INTENT(IN) :: ptstep
83 REAL,
DIMENSION(:),
INTENT(IN) :: pta
84 REAL,
DIMENSION(:),
INTENT(IN) :: pqa
85 REAL,
DIMENSION(:),
INTENT(IN) :: ppa
86 REAL,
DIMENSION(:),
INTENT(IN) :: pps
87 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
88 REAL,
DIMENSION(:),
INTENT(IN) :: pzona
89 REAL,
DIMENSION(:),
INTENT(IN) :: pmera
90 REAL,
DIMENSION(:),
INTENT(IN) :: pht
91 REAL,
DIMENSION(:),
INTENT(IN) :: phw
92 REAL,
DIMENSION(:),
INTENT(IN) :: pcd
93 REAL,
DIMENSION(:),
INTENT(IN) :: pcdn
94 REAL,
DIMENSION(:),
INTENT(IN) :: pch
95 REAL,
DIMENSION(:),
INTENT(IN) :: pce
96 REAL,
DIMENSION(:),
INTENT(IN) :: pri
97 REAL,
DIMENSION(:),
INTENT(IN) :: phu
98 REAL,
DIMENSION(:),
INTENT(IN) :: pz0h
99 REAL,
DIMENSION(:),
INTENT(IN) :: pqsat
100 REAL,
DIMENSION(:),
INTENT(IN) :: psfzon
101 REAL,
DIMENSION(:),
INTENT(IN) :: psfmer
102 REAL,
DIMENSION(:),
INTENT(IN) :: psfth
103 REAL,
DIMENSION(:),
INTENT(IN) :: psftq
104 REAL,
DIMENSION(:,:),
INTENT(IN):: pdir_sw
106 REAL,
DIMENSION(:,:),
INTENT(IN):: psca_sw
108 REAL,
DIMENSION(:),
INTENT(IN) :: plw
109 REAL,
DIMENSION(:),
INTENT(IN) :: ptrad
110 REAL,
DIMENSION(:,:),
INTENT(IN):: pdir_alb
111 REAL,
DIMENSION(:,:),
INTENT(IN):: psca_alb
112 REAL,
DIMENSION(:),
INTENT(IN) :: pemis
114 REAL,
DIMENSION(:),
INTENT(IN) :: prain
115 REAL,
DIMENSION(:),
INTENT(IN) :: psnow
117 REAL,
DIMENSION(:),
INTENT(IN) :: pcd_ice
118 REAL,
DIMENSION(:),
INTENT(IN) :: pcdn_ice
119 REAL,
DIMENSION(:),
INTENT(IN) :: pch_ice
120 REAL,
DIMENSION(:),
INTENT(IN) :: pce_ice
121 REAL,
DIMENSION(:),
INTENT(IN) :: pri_ice
122 REAL,
DIMENSION(:),
INTENT(IN) :: pz0_ice
123 REAL,
DIMENSION(:),
INTENT(IN) :: pz0h_ice
124 REAL,
DIMENSION(:),
INTENT(IN) :: pqsat_ice
125 REAL,
DIMENSION(:),
INTENT(IN) :: psfth_ice
126 REAL,
DIMENSION(:),
INTENT(IN) :: psftq_ice
127 REAL,
DIMENSION(:),
INTENT(IN) :: psfzon_ice
128 REAL,
DIMENSION(:),
INTENT(IN) :: psfmer_ice
133 REAL,
DIMENSION(SIZE(PTA)) :: zz0w
134 REAL,
DIMENSION(SIZE(PTA)) :: zh
136 REAL(KIND=JPRB) :: zhook_handle
139 IF (lhook) CALL dr_hook(
'DIAG_INLINE_SEAFLUX_N',0,zhook_handle)
143 IF (s%LHANDLE_SIC)
THEN
144 dgs%XTS (:) = (1 - s%XSIC(:)) * s%XSST(:) + s%XSIC(:) * s%XTICE(:)
145 dgs%XTSRAD(:) = ptrad(:)
147 dgs%XTS (:) = s%XSST (:)
148 dgs%XTSRAD(:) = ptrad(:)
151 IF (.NOT. s%LSBL)
THEN
154 CALL
param_cls(pta, s%XSST, pqa, ppa, prhoa, pzona, pmera, pht, phw, &
155 psfth, psftq, psfzon, psfmer, &
156 dgs%XT2M, dgs%XQ2M, dgs%XHU2M, dgs%XZON10M, dgs%XMER10M )
157 IF (s%LHANDLE_SIC)
THEN
158 CALL
param_cls(pta, s%XTICE, pqa, ppa, prhoa, pzona, pmera, pht, phw, &
159 psfth_ice, psftq_ice, psfzon_ice, psfmer_ice, &
160 dgs%XT2M_ICE, dgs%XQ2M_ICE, dgs%XHU2M_ICE, dgs%XZON10M_ICE, dgs%XMER10M_ICE )
162 ELSE IF (dgs%N2M==2)
THEN
164 CALL
cls_tq(pta, pqa, ppa, pps, pht, &
166 s%XSST, phu, pz0h, zh, &
167 dgs%XT2M, dgs%XQ2M, dgs%XHU2M)
170 pcd, pcdn, pri, zh, &
171 dgs%XZON10M, dgs%XMER10M)
172 IF (s%LHANDLE_SIC)
THEN
174 CALL
cls_tq(pta, pqa, ppa, pps, pht, &
175 pcd_ice, pch_ice, pri_ice, &
176 s%XTICE, phu, pz0h_ice, zh, &
177 dgs%XT2M_ICE, dgs%XQ2M_ICE, dgs%XHU2M_ICE)
180 pcd_ice, pcdn_ice, pri_ice, zh, &
181 dgs%XZON10M_ICE, dgs%XMER10M_ICE )
186 IF (s%LHANDLE_SIC)
THEN
188 dgs%XT2M = dgs%XT2M * (1 - s%XSIC) + dgs%XT2M_ICE * s%XSIC
189 dgs%XQ2M = dgs%XQ2M * (1 - s%XSIC) + dgs%XQ2M_ICE * s%XSIC
190 dgs%XHU2M = dgs%XHU2M * (1 - s%XSIC) + dgs%XHU2M_ICE * s%XSIC
192 dgs%XZON10M(:) = dgs%XZON10M(:) * (1 - s%XSIC(:)) + dgs%XZON10M_ICE(:) * s%XSIC(:)
193 dgs%XMER10M(:) = dgs%XMER10M(:) * (1 - s%XSIC(:)) + dgs%XMER10M_ICE(:) * s%XSIC(:)
194 dgs%XWIND10M_ICE(:) = sqrt(dgs%XZON10M_ICE(:)**2+dgs%XMER10M_ICE(:)**2)
196 dgs%XRI = pri * (1 - s%XSIC) + pri_ice * s%XSIC
202 dgs%XT2M_MIN(:) = min(dgs%XT2M_MIN(:),dgs%XT2M(:))
203 dgs%XT2M_MAX(:) = max(dgs%XT2M_MAX(:),dgs%XT2M(:))
205 dgs%XHU2M_MIN(:) = min(dgs%XHU2M_MIN(:),dgs%XHU2M(:))
206 dgs%XHU2M_MAX(:) = max(dgs%XHU2M_MAX(:),dgs%XHU2M(:))
208 dgs%XWIND10M(:) = sqrt(dgs%XZON10M(:)**2+dgs%XMER10M(:)**2)
209 dgs%XWIND10M_MAX(:) = max(dgs%XWIND10M_MAX(:),dgs%XWIND10M(:))
224 IF (dgs%LSURF_BUDGET.OR.dgs%LSURF_BUDGETC)
THEN
230 pdir_sw, psca_sw, plw, pdir_alb, &
231 psca_alb,s%XICE_ALB, pemis, ptrad, &
232 psfzon, psfzon_ice, psfmer, &
233 psfmer_ice, s%LHANDLE_SIC, s%XSIC, s%XTICE, &
234 dgs%XRN, dgs%XH, dgs%XLE, dgs%XLE_ICE, dgs%XGFLUX, &
235 dgs%XSWD, dgs%XSWU, dgs%XSWBD, dgs%XSWBU, dgs%XLWD, dgs%XLWU, &
236 dgs%XFMU, dgs%XFMV, dgs%XEVAP, dgs%XSUBL, &
237 dgs%XRN_ICE, dgs%XH_ICE, dgs%XGFLUX_ICE, &
238 dgs%XSWU_ICE, dgs%XSWBU_ICE, dgs%XLWU_ICE, &
239 dgs%XFMU_ICE, dgs%XFMV_ICE )
243 IF(dgs%LSURF_BUDGETC)
THEN
245 ptstep, dgs%XRN, dgs%XH, dgs%XLE, dgs%XLE_ICE, dgs%XGFLUX, &
246 dgs%XSWD, dgs%XSWU, dgs%XLWD, dgs%XLWU, dgs%XFMU, dgs%XFMV, &
247 dgs%XEVAP, dgs%XSUBL, s%LHANDLE_SIC, &
248 dgs%XRN_ICE, dgs%XH_ICE, dgs%XGFLUX_ICE, &
249 dgs%XSWU_ICE, dgs%XLWU_ICE, dgs%XFMU_ICE, dgs%XFMV_ICE)
253 IF (s%LHANDLE_SIC)
THEN
257 dgs%XCD = (1 - s%XSIC) * pcd + s%XSIC * pcd_ice
258 dgs%XCH = (1 - s%XSIC) * pch + s%XSIC * pch_ice
259 dgs%XCE = (1 - s%XSIC) * pce + s%XSIC * pce_ice
263 zz0w = ( 1 - s%XSIC ) * 1.0/(log(phw/s%XZ0) **2) + &
264 s%XSIC * 1.0/(log(phw/pz0_ice)**2)
265 dgs%XZ0 = phw * exp( - sqrt( 1./ zz0w ))
266 zz0w = ( 1 - s%XSIC ) * 1.0/(log(phw/pz0h) **2) + &
267 s%XSIC * 1.0/(log(phw/pz0h_ice)**2)
268 dgs%XZ0H = phw * exp( - sqrt( 1./ zz0w ))
270 dgs%XCD_ICE = pcd_ice
271 dgs%XCH_ICE = pch_ice
272 dgs%XZ0_ICE = pz0_ice
273 dgs%XZ0H_ICE = pz0h_ice
291 IF (dgs%LSURF_VARS)
THEN
295 IF (s%LHANDLE_SIC)
THEN
296 dgs%XQS = (1 - s%XSIC) * pqsat + s%XSIC * pqsat_ice
297 dgs%XQS_ICE = pqsat_ice
306 IF (dgsi%LDIAG_SEAICE)
THEN
307 IF (trim(s%CSEAICE_SCHEME) ==
'GELATO')
THEN
309 dgsi%XSIT = reshape(
glt_avhicem(s%TGLT%dom,s%TGLT%sit),(/gelato_dim/))
310 dgsi%XSND = reshape(
glt_avhsnwm(s%TGLT%dom,s%TGLT%sit),(/gelato_dim/))
311 dgsi%XMLT = s%TGLT%oce_all(:,1)%tml
320 gsic=(s%LHANDLE_SIC.AND.(s%CSEAICE_SCHEME /=
'NONE '))
322 IF (lcpl_sea.OR.gsic)
THEN
325 ptstep,dgs%XZON10M,dgs%XMER10M,dgs%XFMU,dgs%XFMV, &
326 dgs%XSWD,dgs%XSWU,dgs%XGFLUX,psftq,prain, &
327 psnow,plw,s%XTICE,psfth_ice, &
328 psftq_ice,pdir_sw,psca_sw, &
329 dgs%XSWU_ICE,dgs%XLWU_ICE,gsic )
332 IF (lhook) CALL dr_hook(
'DIAG_INLINE_SEAFLUX_N',1,zhook_handle)
subroutine cls_wind(PZONA, PMERA, PHW, PCD, PCDN, PRI, PHV, PZON10M, PMER10M)
subroutine param_cls(PTA, PTS, PQA, PPA, PRHOA, PZONA, PMERA, PH, PHW, PSFTH, PSFTQ, PSFZON, PSFMER, PT2M, PQ2M, PHU2M, PZON10M, PMER10M)
subroutine diag_surf_budgetc_sea(DGS, PTSTEP, PRN, PH, PLE, PLE_ICE, PGFLUX, PSWD, PSWU, PLWD, PLWU, PFMU, PFMV, PEVAP, PSUBL, OHANDLE_SIC, PRN_ICE, PH_ICE, PGFLUX_ICE, PSWU_ICE, PLWU_ICE, PFMU_ICE, PFMV_ICE)
subroutine diag_inline_seaflux_n(DGS, DGSI, S, PTSTEP, PTA, PQA, PPA, PPS, PRHOA, PZONA, PMERA, PHT, PHW, PCD, PCDN, PCH, PCE, PRI, PHU, PZ0H, PQSAT, PSFTH, PSFTQ, PSFZON, PSFMER, PDIR_SW, PSCA_SW, PLW, PDIR_ALB, PSCA_ALB, PEMIS, PTRAD, PRAIN, PSNOW, PCD_ICE, PCDN_ICE, PCH_ICE, PCE_ICE, PRI_ICE, PZ0_ICE, PZ0H_ICE, PQSAT_ICE, PSFTH_ICE, PSFTQ_ICE, PSFZON_ICE, PSFMER_ICE)
subroutine diag_surf_budget_sea(PTT, PSST, PRHOA, PSFTH, PSFTH_ICE, PSFTQ, PSFTQ_ICE, PDIR_SW, PSCA_SW, PLW, PDIR_ALB, PSCA_ALB, PALB_ICE, PEMIS, PTRAD, PSFZON, PSFZON_ICE, PSFMER, PSFMER_ICE, OHANDLE_SIC, PSIC, PTICE, PRN, PH, PLE, PLE_ICE, PGFLUX, PSWD, PSWU, PSWBD, PSWBU, PLWD, PLWU, PFMU, PFMV, PEVAP, PSUBL, PRN_ICE, PH_ICE, PGFLUX_ICE, PSWU_ICE, PSWBU_ICE, PLWU_ICE, PFMU_ICE, PFMV_ICE)
subroutine diag_cpl_esm_sea(S, PTSTEP, PZON10M, PMER10M, PSFU, PSFV, PSWD, PSWU, PGFLUX, PSFTQ, PRAIN, PSNOW, PLW, PTICE, PSFTH_ICE, PSFTQ_ICE, PDIR_SW, PSCA_SW, PSWU_ICE, PLWU_ICE, OSIC)
subroutine seaflux_albedo(PDIR_SW, PSCA_SW, PDIR_ALB, PSCA_ALB, PALB)
subroutine cls_tq(PTA, PQA, PPA, PPS, PHT, PCD, PCH, PRI, PTS, PHU, PZ0H, PH, PTNM, PQNM, PHUNM)