7 hprogram, ki, ksw, pzenith, psw_bands, &
8 ptrad, pdir_alb, psca_alb, pemis, ptsurf )
53 USE modi_average_tsurf
55 USE yomhook
,ONLY : lhook, dr_hook
56 USE parkind1
,ONLY : jprb
60 USE modi_update_esm_isba_n
61 USE modi_update_esm_seaflux_n
62 USE modi_update_esm_watflux_n
63 USE modi_update_esm_flake_n
70 TYPE(flake_t),
INTENT(INOUT) :: f
71 TYPE(isba_t
),
INTENT(INOUT) :: i
76 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
77 INTEGER,
INTENT(IN) :: ki
78 INTEGER,
INTENT(IN) :: ksw
79 REAL,
DIMENSION(KI),
INTENT(IN) :: pzenith
80 REAL,
DIMENSION(KSW),
INTENT(IN) :: psw_bands
82 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptrad
83 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: pdir_alb
84 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: psca_alb
85 REAL,
DIMENSION(KI),
INTENT(OUT) :: pemis
86 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptsurf
91 LOGICAL :: gnature, gtown, gwater, gsea
95 REAL,
DIMENSION(KI,NTILESFC) :: ztrad_tile
96 REAL,
DIMENSION(KI,NTILESFC) :: zemis_tile
97 REAL,
DIMENSION(KI,NTILESFC) :: zfrac_tile
98 REAL,
DIMENSION(KI,NTILESFC) :: ztsurf_tile
100 REAL,
DIMENSION(KI,KSW,NTILESFC) :: zdir_alb_tile
101 REAL,
DIMENSION(KI,KSW,NTILESFC) :: zsca_alb_tile
103 REAL(KIND=JPRB) :: zhook_handle
109 IF (lhook) CALL dr_hook(
'UPDATE_ESM_SURF_ATM_N',0,zhook_handle)
110 gsea = (u%NSIZE_SEA >0 .AND. u%CSEA/=
'NONE')
111 gwater = (u%NSIZE_WATER >0 .AND. u%CWATER/=
'NONE')
112 gnature = (u%NSIZE_NATURE >0 .AND. u%CNATURE/=
'NONE')
114 gtown = u%NSIZE_TOWN >0
116 CALL
abor1_sfx(
'UPDATE_ESM_SURF_ATM_n: TOWN SCHEME NOT YET AVAILABLE FOR EARTH SYSTEM MODEL')
125 ztrad_tile(:,:) = xundef
126 zdir_alb_tile(:,:,:) = xundef
127 zsca_alb_tile(:,:,:) = xundef
128 zemis_tile(:,:) = xundef
129 ztsurf_tile(:,:) = xundef
133 zfrac_tile(:,:) = 0.0
147 zfrac_tile(:,jtile) = u%XSEA(:)
161 zfrac_tile(:,jtile) = u%XWATER(:)
163 CALL
treat_surf(u%NSIZE_WATER,u%NR_WATER,jtile)
174 zfrac_tile(:,jtile) = u%XNATURE(:)
176 CALL
treat_surf(u%NSIZE_NATURE,u%NR_NATURE,jtile)
200 zdir_alb_tile, zsca_alb_tile, zemis_tile, ztrad_tile, &
201 pdir_alb, psca_alb, pemis, ptrad )
207 IF (lhook) CALL dr_hook(
'UPDATE_ESM_SURF_ATM_N',1,zhook_handle)
212 INTEGER,
INTENT(IN) :: ksize
213 INTEGER,
INTENT(IN),
DIMENSION(:) :: kmask
214 INTEGER,
INTENT(IN) :: ktile
216 REAL,
DIMENSION(KSIZE) :: zp_zenith
218 REAL,
DIMENSION(KSIZE) :: zp_trad
219 REAL,
DIMENSION(KSIZE,KSW) :: zp_dir_alb
220 REAL,
DIMENSION(KSIZE,KSW) :: zp_sca_alb
221 REAL,
DIMENSION(KSIZE) :: zp_emis
222 REAL,
DIMENSION(KSIZE) :: zp_tsurf
225 REAL(KIND=JPRB) :: zhook_handle
229 IF (lhook) CALL dr_hook(
'UPDATE_ESM_SURF_ATM_N:TREAT_SURF',0,zhook_handle)
238 zp_zenith(jj) = pzenith(kmask(jj))
244 IF (u%CSEA==
'SEAFLX')
THEN
246 u%NSIZE_SEA,ksw,zp_zenith,zp_dir_alb, &
247 zp_sca_alb,zp_emis,zp_trad,zp_tsurf )
249 CALL
abor1_sfx(
'UPDATE_ESM_SURF_ATM_n: SEA SCHEME MUST BE ACTIVATED FOR EARTH SYSTEM MODEL')
252 ELSEIF (ktile==2)
THEN
254 IF (u%CWATER==
'WATFLX')
THEN
256 u%NSIZE_WATER,ksw,zp_zenith,zp_dir_alb, &
257 zp_sca_alb,zp_emis,zp_trad,zp_tsurf )
258 ELSEIF (u%CWATER==
'FLAKE ')
THEN
260 u%NSIZE_WATER,ksw,zp_zenith,zp_dir_alb, &
261 zp_sca_alb,zp_emis,zp_trad,zp_tsurf )
263 CALL
abor1_sfx(
'UPDATE_ESM_SURF_ATM_n: INLAND WATER SCHEME MUST BE ACTIVATED FOR EARTH SYSTEM MODEL')
266 ELSEIF (ktile==3)
THEN
268 IF (u%CNATURE==
'ISBA')
THEN
270 u%NSIZE_NATURE,ksw,zp_zenith,psw_bands,zp_dir_alb, &
271 zp_sca_alb,zp_emis,zp_trad,zp_tsurf )
273 CALL
abor1_sfx(
'UPDATE_ESM_SURF_ATM_n: NATURE SCHEME MUST BE ACTIVATED FOR EARTH SYSTEM MODEL')
287 ztrad_tile(kmask(jj),ktile) = zp_trad(jj)
288 zdir_alb_tile(kmask(jj),:,ktile)= zp_dir_alb(jj,:)
289 zsca_alb_tile(kmask(jj),:,ktile)= zp_sca_alb(jj,:)
290 zemis_tile(kmask(jj),ktile) = zp_emis(jj)
291 ztsurf_tile(kmask(jj),ktile) = zp_tsurf(jj)
294 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_isba_n(I, KI, KSW, PZENITH, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF)
subroutine update_esm_watflux_n(W, KI, KSW, PZENITH, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF)
subroutine abor1_sfx(YTEXT)
subroutine update_esm_surf_atm_n(F, I, S, U, W, HPROGRAM, KI, KSW, PZENITH, PSW_BANDS, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF)
subroutine average_rad(PFRAC_TILE, PDIR_ALB_TILE, PSCA_ALB_TILE, PEMIS_TILE, PTRAD_TILE, PDIR_ALB, PSCA_ALB, PEMIS, PTRAD)
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)