7 ptstep,pzon10m,pmer10m,psfu,psfv, &
8 pswd,pswu,pgflux,psftq,prain,psnow, &
9 plw,ptice,psfth_ice,psftq_ice, &
10 pdir_sw,psca_sw,pswu_ice,plwu_ice, &
47 USE yomhook
,ONLY : lhook, dr_hook
48 USE parkind1
,ONLY : jprb
57 REAL,
INTENT(IN) :: ptstep
58 REAL,
DIMENSION(:),
INTENT(IN) :: pzon10m
59 REAL,
DIMENSION(:),
INTENT(IN) :: pmer10m
60 REAL,
DIMENSION(:),
INTENT(IN) :: psfu
61 REAL,
DIMENSION(:),
INTENT(IN) :: psfv
62 REAL,
DIMENSION(:),
INTENT(IN) :: pswd
63 REAL,
DIMENSION(:),
INTENT(IN) :: pswu
64 REAL,
DIMENSION(:),
INTENT(IN) :: pgflux
65 REAL,
DIMENSION(:),
INTENT(IN) :: psftq
66 REAL,
DIMENSION(:),
INTENT(IN) :: prain
67 REAL,
DIMENSION(:),
INTENT(IN) :: psnow
68 REAL,
DIMENSION(:),
INTENT(IN) :: plw
69 REAL,
DIMENSION(:),
INTENT(IN) :: psfth_ice
70 REAL,
DIMENSION(:),
INTENT(IN) :: psftq_ice
71 REAL,
DIMENSION(:),
INTENT(IN) :: ptice
72 REAL,
DIMENSION(:,:),
INTENT(IN):: pdir_sw
73 REAL,
DIMENSION(:,:),
INTENT(IN):: psca_sw
74 REAL,
DIMENSION(:),
INTENT(IN) :: pswu_ice
75 REAL,
DIMENSION(:),
INTENT(IN) :: plwu_ice
76 LOGICAL,
INTENT(IN) :: osic
80 REAL,
DIMENSION(SIZE(S%XICE_ALB)) :: zswu, ztice4
87 REAL(KIND=JPRB) :: zhook_handle
89 IF (lhook) CALL dr_hook(
'DIAG_CPL_ESM_SEA',0,zhook_handle)
97 s%XCPL_SEA_WIND(:) = s%XCPL_SEA_WIND(:) + ptstep * sqrt(pzon10m(:)**2+pmer10m(:)**2)
101 s%XCPL_SEA_FWSU(:) = s%XCPL_SEA_FWSU(:) + ptstep * psfu(:)
102 s%XCPL_SEA_FWSV(:) = s%XCPL_SEA_FWSV(:) + ptstep * psfv(:)
103 s%XCPL_SEA_FWSM(:) = s%XCPL_SEA_FWSM(:) + ptstep * sqrt(psfu(:)**2+psfv(:)**2)
107 s%XCPL_SEA_SNET(:) = s%XCPL_SEA_SNET(:) + ptstep * (pswd(:) - pswu(:))
111 s%XCPL_SEA_HEAT(:) = s%XCPL_SEA_HEAT(:) + ptstep * (pgflux(:) + pswu(:) - pswd(:))
115 s%XCPL_SEA_EVAP(:) = s%XCPL_SEA_EVAP(:) + ptstep * psftq(:)
119 s%XCPL_SEA_RAIN(:) = s%XCPL_SEA_RAIN(:) + ptstep * prain(:)
120 s%XCPL_SEA_SNOW(:) = s%XCPL_SEA_SNOW(:) + ptstep * psnow(:)
125 IF (lcpl_seaice.OR.osic)
THEN
127 ini =
SIZE(pdir_sw,1)
128 iswb =
SIZE(pdir_sw,2)
138 zswu(ji) = zswu(ji) + (pdir_sw(ji,jswb)+psca_sw(ji,jswb)) * s%XICE_ALB(ji)
143 s%XCPL_SEAICE_SNET(:) = s%XCPL_SEAICE_SNET(:) + ptstep * (pswd(:) - zswu(:))
148 s%XCPL_SEAICE_HEAT(:) = s%XCPL_SEAICE_HEAT(:) + ptstep * &
149 ( plw(:) - plwu_ice(:) - psfth_ice(:) - xlstt*psftq_ice(:) )
151 ztice4(:)=ptice(:)**4
152 s%XCPL_SEAICE_HEAT(:) = s%XCPL_SEAICE_HEAT(:) + ptstep * ( xemiswatice*(plw(:)-xstefan*ztice4(:)) &
153 - psfth_ice(:) - xlstt*psftq_ice(:) )
158 s%XCPL_SEAICE_EVAP(:) = s%XCPL_SEAICE_EVAP(:) + ptstep * psftq_ice(:)
162 IF (lhook) CALL dr_hook(
'DIAG_CPL_ESM_SEA',1,zhook_handle)
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)