7 PSFTQ, PSFTQ_ICE, PDIR_SW, PSCA_SW, PLW, &
8 PDIR_ALB, PSCA_ALB, PEMIS, PTRAD, &
9 PSFZON, PSFZON_ICE, PSFMER, PSFMER_ICE )
52 TYPE(
diag_t),
INTENT(INOUT) :: D
53 TYPE(
diag_t),
INTENT(INOUT) :: DI
56 REAL,
INTENT(IN) :: PTT
57 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
58 REAL,
DIMENSION(:),
INTENT(IN) :: PSFTH
59 REAL,
DIMENSION(:),
INTENT(IN) :: PSFTH_ICE
61 REAL,
DIMENSION(:),
INTENT(IN) :: PSFTQ
62 REAL,
DIMENSION(:),
INTENT(IN) :: PSFTQ_ICE
64 REAL,
DIMENSION(:,:),
INTENT(IN):: PDIR_SW
66 REAL,
DIMENSION(:,:),
INTENT(IN):: PSCA_SW
68 REAL,
DIMENSION(:),
INTENT(IN) :: PLW
70 REAL,
DIMENSION(:,:),
INTENT(IN):: PDIR_ALB
71 REAL,
DIMENSION(:,:),
INTENT(IN):: PSCA_ALB
72 REAL,
DIMENSION(:),
INTENT(IN) :: PEMIS
73 REAL,
DIMENSION(:),
INTENT(IN) :: PTRAD
75 REAL,
DIMENSION(:),
INTENT(IN) :: PSFZON
76 REAL,
DIMENSION(:),
INTENT(IN) :: PSFZON_ICE
77 REAL,
DIMENSION(:),
INTENT(IN) :: PSFMER
78 REAL,
DIMENSION(:),
INTENT(IN) :: PSFMER_ICE
85 REAL(KIND=JPRB) :: ZHOOK_HANDLE
88 IF (
lhook)
CALL dr_hook(
'DIAG_SURF_BUDGET_SEA',0,zhook_handle)
90 iswb =
SIZE(pdir_sw,2)
95 d%XSWBD(:,jswb) = pdir_sw(:,jswb) + psca_sw(:,jswb)
96 d%XSWBU(:,jswb) = pdir_sw(:,jswb) * pdir_alb(:,jswb) + psca_sw(:,jswb) * psca_alb(:,jswb)
102 d%XSWD(:) = d%XSWD(:) + d%XSWBD(:,jswb)
103 d%XSWU(:) = d%XSWU(:) + d%XSWBU(:,jswb)
109 d%XLWU(:)=pemis(:)*
xstefan*ptrad(:)**4 + (1.-pemis(:))*plw(:)
113 d%XRN(:) = d%XSWD(:) - d%XSWU(:) + d%XLWD(:) - d%XLWU (:)
115 IF (.NOT.s%LHANDLE_SIC)
THEN 124 d%XLE = psftq *
xlstt 125 d%XLEI = psftq *
xlstt 129 d%XLE = psftq *
xlvtt 150 di%XSWBU(:,jswb) = (pdir_sw(:,jswb) + psca_sw(:,jswb)) * s%XICE_ALB(:)
155 di%XSWU(:) = di%XSWU(:) + di%XSWBU(:,jswb)
164 di%XRN(:) = d%XSWD(:) - di%XSWU(:) + d%XLWD(:) - di%XLWU(:)
168 d%XH = (1 - s%XSIC) * psfth + s%XSIC * psfth_ice
173 d%XLE = (1 - s%XSIC) * psftq *
xlvtt + s%XSIC * psftq_ice *
xlstt 174 d%XLEI = psftq_ice *
xlstt 175 d%XEVAP = (1 - s%XSIC) * psftq + s%XSIC * psftq_ice
176 d%XSUBL = s%XSIC * psftq_ice
180 di%XGFLUX = di%XRN - di%XH - d%XLEI
184 d%XFMU = (1 - s%XSIC) * psfzon + s%XSIC * psfzon_ice
186 d%XFMV = (1 - s%XSIC) * psfmer + s%XSIC * psfmer_ice
193 d%XGFLUX = d%XRN - d%XH - d%XLE
196 IF (
lhook)
CALL dr_hook(
'DIAG_SURF_BUDGET_SEA',1,zhook_handle)
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)