7 ocpl_seaice,ptstep,pzon10m,pmer10m,psfu,psfv, &
8 pswd,pswu,pgflux,psftq,prain,psnow,plw,ptice, &
9 psfth_ice,psftq_ice,pdir_sw,psca_sw )
42 USE yomhook
,ONLY : lhook, dr_hook
43 USE parkind1
,ONLY : jprb
52 LOGICAL,
INTENT(IN) :: ocpl_seaice
53 REAL,
INTENT(IN) :: ptstep
54 REAL,
DIMENSION(:),
INTENT(IN) :: pzon10m
55 REAL,
DIMENSION(:),
INTENT(IN) :: pmer10m
56 REAL,
DIMENSION(:),
INTENT(IN) :: psfu
57 REAL,
DIMENSION(:),
INTENT(IN) :: psfv
58 REAL,
DIMENSION(:),
INTENT(IN) :: pswd
59 REAL,
DIMENSION(:),
INTENT(IN) :: pswu
60 REAL,
DIMENSION(:),
INTENT(IN) :: pgflux
61 REAL,
DIMENSION(:),
INTENT(IN) :: psftq
62 REAL,
DIMENSION(:),
INTENT(IN) :: prain
63 REAL,
DIMENSION(:),
INTENT(IN) :: psnow
64 REAL,
DIMENSION(:),
INTENT(IN) :: plw
65 REAL,
DIMENSION(:),
INTENT(IN) :: psfth_ice
66 REAL,
DIMENSION(:),
INTENT(IN) :: psftq_ice
67 REAL,
DIMENSION(:),
INTENT(IN) :: ptice
68 REAL,
DIMENSION(:,:),
INTENT(IN):: pdir_sw
69 REAL,
DIMENSION(:,:),
INTENT(IN):: psca_sw
73 REAL,
DIMENSION(SIZE(W%XICE_ALB)) :: zswu, ztice4
80 REAL(KIND=JPRB) :: zhook_handle
82 IF (lhook) CALL dr_hook(
'DIAG_CPL_ESM_WATER',0,zhook_handle)
90 w%XCPL_WATER_WIND(:) = w%XCPL_WATER_WIND(:) + ptstep * sqrt(pzon10m(:)**2+pmer10m(:)**2)
94 w%XCPL_WATER_FWSU(:) = w%XCPL_WATER_FWSU(:) + ptstep * psfu(:)
95 w%XCPL_WATER_FWSV(:) = w%XCPL_WATER_FWSV(:) + ptstep * psfv(:)
96 w%XCPL_WATER_FWSM(:) = w%XCPL_WATER_FWSM(:) + ptstep * sqrt(psfu(:)**2+psfv(:)**2)
100 w%XCPL_WATER_SNET(:) = w%XCPL_WATER_SNET(:) + ptstep * (pswd(:) - pswu(:))
104 w%XCPL_WATER_HEAT(:) = w%XCPL_WATER_HEAT(:) + ptstep * (pgflux(:) + pswu(:) - pswd(:))
108 w%XCPL_WATER_EVAP(:) = w%XCPL_WATER_EVAP(:) + ptstep * psftq(:)
112 w%XCPL_WATER_RAIN(:) = w%XCPL_WATER_RAIN(:) + ptstep * prain(:)
113 w%XCPL_WATER_SNOW(:) = w%XCPL_WATER_SNOW(:) + ptstep * psnow(:)
119 IF (ocpl_seaice)
THEN
121 ini =
SIZE(pdir_sw,1)
122 iswb =
SIZE(pdir_sw,2)
129 zswu(ji) = zswu(ji) + (pdir_sw(ji,jswb)+psca_sw(ji,jswb)) * w%XICE_ALB(ji)
133 w%XCPL_WATERICE_SNET(:) = w%XCPL_WATERICE_SNET(:) + ptstep * (pswd(:) - zswu(:))
137 ztice4(:)=ptice(:)**4
139 w%XCPL_WATERICE_HEAT(:) = w%XCPL_WATERICE_HEAT(:) + ptstep * ( xemiswatice*(plw(:)-xstefan*ztice4(:)) &
140 - psfth_ice(:) - xlstt*psftq_ice(:) )
144 w%XCPL_WATERICE_EVAP(:) = w%XCPL_WATERICE_EVAP(:) + ptstep * psftq_ice(:)
148 IF (lhook) CALL dr_hook(
'DIAG_CPL_ESM_WATER',1,zhook_handle)
subroutine diag_cpl_esm_water(W, OCPL_SEAICE, PTSTEP, PZON10M, PMER10M, PSFU, PSFV, PSWD, PSWU, PGFLUX, PSFTQ, PRAIN, PSNOW, PLW, PTICE, PSFTH_ICE, PSFTQ_ICE, PDIR_SW, PSCA_SW)