6 SUBROUTINE update_esm_surf_atm_n (F, IM, S, U, W, HPROGRAM, KI, KSW, PZENITH, PSW_BANDS, &
7 PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF )
44 USE modd_data_cover_par
, ONLY : ntilesfc
48 USE modi_average_tsurf
55 USE modi_update_esm_isba_n
56 USE modi_update_esm_seaflux_n
57 USE modi_update_esm_watflux_n
58 USE modi_update_esm_flake_n
65 TYPE(
flake_t),
INTENT(INOUT) :: F
71 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
72 INTEGER,
INTENT(IN) :: KI
73 INTEGER,
INTENT(IN) :: KSW
74 REAL,
DIMENSION(KI),
INTENT(IN) :: PZENITH
75 REAL,
DIMENSION(KSW),
INTENT(IN) :: PSW_BANDS
77 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTRAD
78 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: PDIR_ALB
79 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: PSCA_ALB
80 REAL,
DIMENSION(KI),
INTENT(OUT) :: PEMIS
81 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTSURF
86 LOGICAL :: GNATURE, GTOWN, GWATER, GSEA
90 REAL,
DIMENSION(KI,NTILESFC) :: ZTRAD_TILE
91 REAL,
DIMENSION(KI,NTILESFC) :: ZEMIS_TILE
92 REAL,
DIMENSION(KI,NTILESFC) :: ZFRAC_TILE
93 REAL,
DIMENSION(KI,NTILESFC) :: ZTSURF_TILE
95 REAL,
DIMENSION(KI,KSW,NTILESFC) :: ZDIR_ALB_TILE
96 REAL,
DIMENSION(KI,KSW,NTILESFC) :: ZSCA_ALB_TILE
98 REAL(KIND=JPRB) :: ZHOOK_HANDLE
104 IF (
lhook)
CALL dr_hook(
'UPDATE_ESM_SURF_ATM_N',0,zhook_handle)
105 gsea = (u%NSIZE_SEA >0 .AND. u%CSEA/=
'NONE')
106 gwater = (u%NSIZE_WATER >0 .AND. u%CWATER/=
'NONE')
107 gnature = (u%NSIZE_NATURE >0 .AND. u%CNATURE/=
'NONE')
109 gtown = u%NSIZE_TOWN >0
111 CALL abor1_sfx(
'UPDATE_ESM_SURF_ATM_n: TOWN SCHEME NOT YET AVAILABLE FOR EARTH SYSTEM MODEL')
121 zdir_alb_tile(:,:,:) =
xundef 122 zsca_alb_tile(:,:,:) =
xundef 128 zfrac_tile(:,:) = 0.0
142 zfrac_tile(:,jtile) = u%XSEA(:)
156 zfrac_tile(:,jtile) = u%XWATER(:)
158 CALL treat_surf(u%NSIZE_WATER,u%NR_WATER,jtile)
169 zfrac_tile(:,jtile) = u%XNATURE(:)
171 CALL treat_surf(u%NSIZE_NATURE,u%NR_NATURE,jtile)
195 zdir_alb_tile, zsca_alb_tile, zemis_tile, ztrad_tile, &
196 pdir_alb, psca_alb, pemis, ptrad )
202 IF (
lhook)
CALL dr_hook(
'UPDATE_ESM_SURF_ATM_N',1,zhook_handle)
207 INTEGER,
INTENT(IN) :: KSIZE
208 INTEGER,
INTENT(IN),
DIMENSION(:) :: KMASK
209 INTEGER,
INTENT(IN) :: KTILE
211 REAL,
DIMENSION(KSIZE) :: ZP_ZENITH
213 REAL,
DIMENSION(KSIZE) :: ZP_TRAD
214 REAL,
DIMENSION(KSIZE,KSW) :: ZP_DIR_ALB
215 REAL,
DIMENSION(KSIZE,KSW) :: ZP_SCA_ALB
216 REAL,
DIMENSION(KSIZE) :: ZP_EMIS
217 REAL,
DIMENSION(KSIZE) :: ZP_TSURF
220 REAL(KIND=JPRB) :: ZHOOK_HANDLE
224 IF (
lhook)
CALL dr_hook(
'UPDATE_ESM_SURF_ATM_N:TREAT_SURF',0,zhook_handle)
233 zp_zenith(jj) = pzenith(kmask(jj))
239 IF (u%CSEA==
'SEAFLX')
THEN 241 zp_sca_alb,zp_emis,zp_trad,zp_tsurf )
243 CALL abor1_sfx(
'UPDATE_ESM_SURF_ATM_n: SEA SCHEME MUST BE ACTIVATED FOR EARTH SYSTEM MODEL')
246 ELSEIF (ktile==2)
THEN 248 IF (u%CWATER==
'WATFLX')
THEN 250 zp_sca_alb,zp_emis,zp_trad,zp_tsurf )
251 ELSEIF (u%CWATER==
'FLAKE ')
THEN 253 zp_sca_alb,zp_emis,zp_trad,zp_tsurf )
255 CALL abor1_sfx(
'UPDATE_ESM_SURF_ATM_n: INLAND WATER SCHEME MUST BE ACTIVATED FOR EARTH SYSTEM MODEL')
258 ELSEIF (ktile==3)
THEN 260 IF (u%CNATURE==
'ISBA')
THEN 262 ksw,zp_zenith,psw_bands,zp_dir_alb, &
263 zp_sca_alb,zp_emis,zp_trad,zp_tsurf )
265 CALL abor1_sfx(
'UPDATE_ESM_SURF_ATM_n: NATURE SCHEME MUST BE ACTIVATED FOR EARTH SYSTEM MODEL')
279 ztrad_tile(kmask(jj),ktile) = zp_trad(jj)
280 zdir_alb_tile(kmask(jj),:,ktile)= zp_dir_alb(jj,:)
281 zsca_alb_tile(kmask(jj),:,ktile)= zp_sca_alb(jj,:)
282 zemis_tile(kmask(jj),ktile) = zp_emis(jj)
283 ztsurf_tile(kmask(jj),ktile) = zp_tsurf(jj)
286 IF (
lhook)
CALL dr_hook(
'UPDATE_ESM_SURF_ATM_N:TREAT_SURF',1,zhook_handle)
subroutine average_tsurf(PFRAC_TILE, PTSURF_TILE, PTSURF)
subroutine update_esm_surf_atm_n(F, IM, S, U, W, HPROGRAM, KI, KSW, PZENITH, PSW_BANDS, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF)
subroutine update_esm_watflux_n(W, KI, KSW, PZENITH, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF)
subroutine abor1_sfx(YTEXT)
subroutine update_esm_isba_n(IO, S, K, NK, NP, NPE, KI, KSW, PZENIT
subroutine update_esm_seaflux_n(S, KI, KSW, PZENITH, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF)
subroutine treat_surf(KMASK, YTYPE)
subroutine update_esm_flake_n(F, KI, KSW, PZENITH, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF)
subroutine average_rad(PFRAC_TILE, PDIR_ALB_TILE, PSCA_ALB_TILE, PEMIS_TILE, PTRAD_TILE,