7 PTSTEP, PTA, PQA, PPA, PPS, PRHOA, PZONA, &
8 PMERA, PHT, PHW, PCD, PCDN, PCH, PCE, PRI, PHU, &
9 PZ0H, PQSAT, PSFTH, PSFTQ, PSFZON, PSFMER, &
10 PDIR_SW, PSCA_SW, PLW, PDIR_ALB, PSCA_ALB, &
11 PEMIS, PTRAD, PRAIN, PSNOW, &
12 PCD_ICE, PCDN_ICE, PCH_ICE, PCE_ICE, PRI_ICE, &
13 PZ0_ICE, PZ0H_ICE, PQSAT_ICE, PSFTH_ICE, PSFTQ_ICE, &
14 PSFZON_ICE, PSFMER_ICE )
53 USE modd_types_glt
, ONLY : t_glt
54 USE modd_glt_param
, ONLY : gelato_dim=>nx
55 USE mode_glt_stats
, ONLY : glt_avhicem, glt_avhsnwm
58 USE modi_diag_surf_budget_sea
59 USE modi_diag_surf_budgetc
60 USE modi_diag_cpl_esm_sea
62 USE modi_seaflux_albedo
73 TYPE(
diag_t),
INTENT(INOUT) :: D
74 TYPE(
diag_t),
INTENT(INOUT) :: DC
75 TYPE(
diag_t),
INTENT(INOUT) :: DI
76 TYPE(
diag_t),
INTENT(INOUT) :: DIC
80 REAL,
INTENT(IN) :: PTSTEP
81 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
82 REAL,
DIMENSION(:),
INTENT(IN) :: PQA
83 REAL,
DIMENSION(:),
INTENT(IN) :: PPA
84 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
85 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
86 REAL,
DIMENSION(:),
INTENT(IN) :: PZONA
87 REAL,
DIMENSION(:),
INTENT(IN) :: PMERA
88 REAL,
DIMENSION(:),
INTENT(IN) :: PHT
89 REAL,
DIMENSION(:),
INTENT(IN) :: PHW
90 REAL,
DIMENSION(:),
INTENT(IN) :: PCD
91 REAL,
DIMENSION(:),
INTENT(IN) :: PCDN
92 REAL,
DIMENSION(:),
INTENT(IN) :: PCH
93 REAL,
DIMENSION(:),
INTENT(IN) :: PCE
94 REAL,
DIMENSION(:),
INTENT(IN) :: PRI
95 REAL,
DIMENSION(:),
INTENT(IN) :: PHU
96 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0H
97 REAL,
DIMENSION(:),
INTENT(IN) :: PQSAT
98 REAL,
DIMENSION(:),
INTENT(IN) :: PSFZON
99 REAL,
DIMENSION(:),
INTENT(IN) :: PSFMER
100 REAL,
DIMENSION(:),
INTENT(IN) :: PSFTH
101 REAL,
DIMENSION(:),
INTENT(IN) :: PSFTQ
102 REAL,
DIMENSION(:,:),
INTENT(IN):: PDIR_SW
104 REAL,
DIMENSION(:,:),
INTENT(IN):: PSCA_SW
106 REAL,
DIMENSION(:),
INTENT(IN) :: PLW
107 REAL,
DIMENSION(:),
INTENT(IN) :: PTRAD
108 REAL,
DIMENSION(:,:),
INTENT(IN):: PDIR_ALB
109 REAL,
DIMENSION(:,:),
INTENT(IN):: PSCA_ALB
110 REAL,
DIMENSION(:),
INTENT(IN) :: PEMIS
112 REAL,
DIMENSION(:),
INTENT(IN) :: PRAIN
113 REAL,
DIMENSION(:),
INTENT(IN) :: PSNOW
115 REAL,
DIMENSION(:),
INTENT(IN) :: PCD_ICE
116 REAL,
DIMENSION(:),
INTENT(IN) :: PCDN_ICE
117 REAL,
DIMENSION(:),
INTENT(IN) :: PCH_ICE
118 REAL,
DIMENSION(:),
INTENT(IN) :: PCE_ICE
119 REAL,
DIMENSION(:),
INTENT(IN) :: PRI_ICE
120 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0_ICE
121 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0H_ICE
122 REAL,
DIMENSION(:),
INTENT(IN) :: PQSAT_ICE
123 REAL,
DIMENSION(:),
INTENT(IN) :: PSFTH_ICE
124 REAL,
DIMENSION(:),
INTENT(IN) :: PSFTQ_ICE
125 REAL,
DIMENSION(:),
INTENT(IN) :: PSFZON_ICE
126 REAL,
DIMENSION(:),
INTENT(IN) :: PSFMER_ICE
131 REAL,
DIMENSION(SIZE(PTA)) :: ZZ0W
132 REAL,
DIMENSION(SIZE(PTA)) :: ZH
134 REAL(KIND=JPRB) :: ZHOOK_HANDLE
137 IF (
lhook)
CALL dr_hook(
'DIAG_INLINE_SEAFLUX_N',0,zhook_handle)
141 IF (s%LHANDLE_SIC)
THEN 142 d%XTS (:) = (1 - s%XSIC(:)) * s%XSST(:) + s%XSIC(:) * s%XTICE(:)
143 d%XTSRAD(:) = ptrad(:)
145 d%XTS (:) = s%XSST (:)
146 d%XTSRAD(:) = ptrad(:)
149 IF (.NOT. s%LSBL)
THEN 153 CALL cls_tq(pta, pqa, ppa, pps, pht, pcd, pch, pri, &
154 s%XSST, phu, pz0h, zh,d%XT2M, d%XQ2M, d%XHU2M)
156 CALL cls_wind(pzona, pmera, phw,pcd, pcdn, pri, zh, &
157 d%XZON10M, d%XMER10M)
158 IF (s%LHANDLE_SIC)
THEN 160 CALL cls_tq(pta, pqa, ppa, pps, pht, pcd_ice, pch_ice, pri_ice, &
161 s%XTICE, phu, pz0h_ice, zh, di%XT2M, di%XQ2M, di%XHU2M)
163 CALL cls_wind(pzona, pmera, phw, pcd_ice, pcdn_ice, pri_ice, zh, &
164 di%XZON10M, di%XMER10M )
169 IF (s%LHANDLE_SIC)
THEN 171 d%XT2M = d%XT2M * (1 - s%XSIC) + di%XT2M * s%XSIC
172 d%XQ2M = d%XQ2M * (1 - s%XSIC) + di%XQ2M * s%XSIC
173 d%XHU2M = d%XHU2M * (1 - s%XSIC) + di%XHU2M * s%XSIC
175 d%XZON10M(:) = d%XZON10M(:) * (1 - s%XSIC(:)) + di%XZON10M(:) * s%XSIC(:)
176 d%XMER10M(:) = d%XMER10M(:) * (1 - s%XSIC(:)) + di%XMER10M(:) * s%XSIC(:)
177 di%XWIND10M(:) = sqrt(di%XZON10M(:)**2+di%XMER10M(:)**2)
179 d%XRI = pri * (1 - s%XSIC) + pri_ice * s%XSIC
185 d%XT2M_MIN(:) = min(d%XT2M_MIN(:),d%XT2M(:))
186 d%XT2M_MAX(:) = max(d%XT2M_MAX(:),d%XT2M(:))
188 d%XHU2M_MIN(:) = min(d%XHU2M_MIN(:),d%XHU2M(:))
189 d%XHU2M_MAX(:) = max(d%XHU2M_MAX(:),d%XHU2M(:))
191 d%XWIND10M(:) = sqrt(d%XZON10M(:)**2+d%XMER10M(:)**2)
192 d%XWIND10M_MAX(:) = max(d%XWIND10M_MAX(:),d%XWIND10M(:))
207 IF (dgo%LSURF_BUDGET.OR.dgo%LSURF_BUDGETC)
THEN 212 psftq, psftq_ice, pdir_sw, psca_sw, plw, &
213 pdir_alb, psca_alb, pemis, ptrad, &
214 psfzon, psfzon_ice, psfmer, psfmer_ice )
215 IF (s%LHANDLE_SIC) di%XLE = d%XLEI
219 IF(dgo%LSURF_BUDGETC)
THEN 223 IF (s%LHANDLE_SIC)
THEN 231 IF (s%LHANDLE_SIC)
THEN 235 d%XCD = (1 - s%XSIC) * pcd + s%XSIC * pcd_ice
236 d%XCH = (1 - s%XSIC) * pch + s%XSIC * pch_ice
237 d%XCE = (1 - s%XSIC) * pce + s%XSIC * pce_ice
241 zz0w = ( 1 - s%XSIC ) * 1.0/(log(phw/s%XZ0) **2) + s%XSIC * 1.0/(log(phw/pz0_ice)**2)
242 d%XZ0 = phw * exp( - sqrt( 1./ zz0w ))
243 zz0w = ( 1 - s%XSIC ) * 1.0/(log(phw/pz0h) **2) + s%XSIC * 1.0/(log(phw/pz0h_ice)**2)
244 d%XZ0H = phw * exp( - sqrt( 1./ zz0w ))
267 IF (dgo%LSURF_VARS)
THEN 271 IF (s%LHANDLE_SIC)
THEN 272 d%XQS = (1 - s%XSIC) * pqsat + s%XSIC * pqsat_ice
282 IF (dgmsi%LDIAG_MISC_SEAICE)
THEN 283 IF (trim(s%CSEAICE_SCHEME) ==
'GELATO')
THEN 285 dgmsi%XSIT = reshape(glt_avhicem(s%TGLT%dom,s%TGLT%sit),(/gelato_dim/))
286 dgmsi%XSND = reshape(glt_avhsnwm(s%TGLT%dom,s%TGLT%sit),(/gelato_dim/))
287 dgmsi%XMLT = s%TGLT%oce_all(:,1)%tml
296 gsic=(s%LHANDLE_SIC.AND.(s%CSEAICE_SCHEME /=
'NONE '))
301 plw, psfth_ice, psftq_ice, pdir_sw, psca_sw, gsic )
304 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 diag_surf_budget_sea(D, DI, S, PTT, PRHOA, PSFTH, PSFTH_ICE, PSFTQ, PSFTQ_ICE, PDIR_SW, PSCA_SW, PLW, PDIR_ALB, PSCA_ALB, PEMIS, PTRAD, PSFZON, PSFZON_ICE, PSFMER, PSFMER_ICE)
subroutine diag_cpl_esm_sea(S, D, DI, PTSTEP, PSFTQ, PRAIN, PSNOW, PLW, PSFTH_ICE, PSFTQ_ICE, PDIR_SW, PSCA_SW, OSIC)
subroutine diag_surf_budgetc(D, DC, PTSTEP, ONOTICE)
subroutine seaflux_albedo(PDIR_SW, PSCA_SW, PDIR_ALB, PSCA_ALB, PALB)
subroutine diag_inline_seaflux_n(DGO, D, DC, DI, DIC, DGMSI, 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 cls_tq(PTA, PQA, PPA, PPS, PHT, PCD, PCH, PRI, PTS, PHU, PZ0H, PH, PTNM, PQNM, PHUNM)