10 pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
11 pemis,ptsrad,ptsurf, &
12 kyear, kmonth,kday, ptime, &
13 hatmfile,hatmfiletype, &
71 USE modd_dst_surf, ONLY: lvarsig_dst, ndstmde, ndst_mdebeg, lrgfix_dst
72 USE modd_slt_surf, ONLY: lvarsig_slt, nsltmde, nslt_mdebeg, lrgfix_slt
74 USE modi_init_io_surf_n
75 USE modi_default_ch_dep
77 USE modi_default_seaflux
78 USE modi_default_diag_seaflux
79 USE modi_read_default_seaflux_n
80 USE modi_read_seaflux_conf_n
81 USE modi_read_seaflux_n
85 USE modi_default_seaice
86 USE modi_read_seaice_n
88 USE modi_read_pgd_seaflux_n
89 USE modi_diag_seaflux_init_n
90 USE modi_end_io_surf_n
93 USE modi_read_seaflux_date
94 USE modi_read_nam_prep_seaflux_n
95 USE modi_init_chemical_n
96 USE modi_prep_ctrl_seaflux
97 USE modi_update_rad_sea
98 USE modi_read_seaflux_sbl_n
101 USE modi_set_surfex_filein
103 USE yomhook
,ONLY : lhook, dr_hook
104 USE parkind1
,ONLY : jprb
119 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
120 CHARACTER(LEN=3),
INTENT(IN) :: hinit
121 INTEGER,
INTENT(IN) :: ki
122 INTEGER,
INTENT(IN) :: ksv
123 INTEGER,
INTENT(IN) :: ksw
124 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN) :: hsv
125 REAL,
DIMENSION(KI),
INTENT(IN) :: pco2
126 REAL,
DIMENSION(KI),
INTENT(IN) :: prhoa
127 REAL,
DIMENSION(KI),
INTENT(IN) :: pzenith
128 REAL,
DIMENSION(KI),
INTENT(IN) :: pazim
129 REAL,
DIMENSION(KSW),
INTENT(IN) :: psw_bands
130 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: pdir_alb
131 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: psca_alb
132 REAL,
DIMENSION(KI),
INTENT(OUT) :: pemis
133 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptsrad
134 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptsurf
135 INTEGER,
INTENT(IN) :: kyear
136 INTEGER,
INTENT(IN) :: kmonth
137 INTEGER,
INTENT(IN) :: kday
138 REAL,
INTENT(IN) :: ptime
141 CHARACTER(LEN=28),
INTENT(IN) :: hatmfile
142 CHARACTER(LEN=6),
INTENT(IN) :: hatmfiletype
143 CHARACTER(LEN=2),
INTENT(IN) :: htest
152 REAL(KIND=JPRB) :: zhook_handle
158 IF (lhook) CALL dr_hook(
'INIT_SEAFLUX_N',0,zhook_handle)
161 IF (htest/=
'OK')
THEN
162 CALL
abor1_sfx(
'INIT_SEAFLUXN: FATAL ERROR DURING ARGUMENT TRANSFER')
174 sm%O%LMERCATOR = .false.
175 sm%O%LCURRENT = .false.
185 CALL
default_seaflux(sm%S%XTSTEP,sm%S%XOUT_TSTEP,sm%S%CSEA_ALB,sm%S%CSEA_FLUX,sm%S%LPWG, &
186 sm%S%LPRECIP,sm%S%LPWEBB,sm%S%NZ0,sm%S%NGRVWAVES,sm%O%LPROGSST, &
187 sm%O%NTIME_COUPLING,sm%O%XOCEAN_TSTEP,sm%S%XICHCE,sm%S%CINTERPOL_SST,&
190 sm%S%CINTERPOL_SIC,sm%S%CINTERPOL_SIT, sm%S%XFREEZING_SST, &
191 sm%S%XSEAICE_TSTEP, sm%S%XSIC_EFOLDING_TIME, &
192 sm%S%XSIT_EFOLDING_TIME, sm%S%XCD_ICE_CST, sm%S%XSI_FLX_DRV)
197 sm%DGS%LRAD_BUDGET,sm%DGS%LCOEF,sm%DGS%LSURF_VARS,&
198 sm%DGO%LDIAG_OCEAN,sm%DGSI%LDIAG_SEAICE,sm%DGS%LSURF_BUDGETC,&
199 sm%DGS%LRESET_BUDGETC,sm%DGS%XDIAG_TSTEP )
215 sm%S%LINTERPOL_SST=.false.
216 sm%S%LINTERPOL_SSS=.false.
217 sm%S%LINTERPOL_SIC=.false.
218 sm%S%LINTERPOL_SIT=.false.
221 CALL
abor1_sfx(
'INIT_SEAFLUX_n: N2M must be set >0 in case of LCPL_SEA')
224 sm%S%CINTERPOL_SST=
'NONE '
225 sm%S%CINTERPOL_SSS=
'NONE '
226 sm%S%CINTERPOL_SIC=
'NONE '
227 sm%S%CINTERPOL_SIT=
'NONE '
229 IF(trim(sm%S%CINTERPOL_SST)/=
'NONE')
THEN
230 sm%S%LINTERPOL_SST=.true.
232 IF(trim(sm%S%CINTERPOL_SSS)/=
'NONE')
THEN
233 sm%S%LINTERPOL_SSS=.true.
235 IF(trim(sm%S%CINTERPOL_SIC)/=
'NONE')
THEN
236 sm%S%LINTERPOL_SIC=.true.
238 IF(trim(sm%S%CINTERPOL_SIT)/=
'NONE')
THEN
239 sm%S%LINTERPOL_SIT=.true.
251 sm%S%TTIME%TDATE%YEAR = nundef
252 sm%S%TTIME%TDATE%MONTH= nundef
253 sm%S%TTIME%TDATE%DAY = nundef
254 sm%S%TTIME%TIME = xundef
259 sm%DGS%LRAD_BUDGET,sm%DGS%LCOEF,sm%DGS%LSURF_VARS,&
260 sm%DGO%LDIAG_OCEAN,sm%DGSI%LDIAG_SEAICE,iluout,sm%DGS%LSURF_BUDGETC )
263 hprogram,hinit,iluout,hatmfile,hatmfiletype,kyear,kmonth,kday,ptime,sm%S%TTIME)
268 hprogram,
'SEA ',
'SEAFLX',
'READ ')
270 hprogram,
'DTCUR',sm%S%TTIME,iresp)
283 hprogram,
'SEA ',
'SEAFLX',
'READ ')
296 IF (hinit/=
'ALL' .AND. hinit/=
'SOD')
THEN
297 IF (lhook) CALL dr_hook(
'INIT_SEAFLUX_N',1,zhook_handle)
306 hprogram,
'SEA ',
'SEAFLX',
'READ ')
311 IF(sm%S%LINTERPOL_SST.OR.sm%S%LINTERPOL_SSS.OR.sm%S%LINTERPOL_SIC.OR.sm%S%LINTERPOL_SIT)
THEN
313 sm%S%TZTIME%TDATE%YEAR = sm%S%TTIME%TDATE%YEAR
314 sm%S%TZTIME%TDATE%MONTH = sm%S%TTIME%TDATE%MONTH
315 sm%S%TZTIME%TDATE%DAY = sm%S%TTIME%TDATE%DAY
316 sm%S%TZTIME%TIME = sm%S%TTIME%TIME
322 IF (hinit/=
'ALL')
THEN
324 IF (lhook) CALL dr_hook(
'INIT_SEAFLUX_N',1,zhook_handle)
337 ilu =
SIZE(sm%S%XCOVER,1)
339 ALLOCATE(sm%S%XSST_INI (ilu))
340 sm%S%XSST_INI(:) = sm%S%XSST(:)
342 ALLOCATE(sm%S%XZ0H(ilu))
343 WHERE (sm%S%XSST(:)>=xtts)
344 sm%S%XZ0H(:) = sm%S%XZ0(:)
346 sm%S%XZ0H(:) = xz0hsn
355 IF(lcpl_sea.OR.sm%S%LHANDLE_SIC)
THEN
357 ALLOCATE(sm%S%XUMER (ilu))
358 ALLOCATE(sm%S%XVMER (ilu))
360 sm%S%XUMER (:)=xundef
361 sm%S%XVMER (:)=xundef
365 ALLOCATE(sm%S%XUMER (0))
366 ALLOCATE(sm%S%XVMER (0))
370 IF(lcpl_seaice.OR.sm%S%LHANDLE_SIC)
THEN
371 ALLOCATE(sm%S%XTICE (ilu))
372 ALLOCATE(sm%S%XICE_ALB(ilu))
373 sm%S%XTICE (:)=xundef
374 sm%S%XICE_ALB(:)=xundef
376 ALLOCATE(sm%S%XTICE (0))
377 ALLOCATE(sm%S%XICE_ALB(0))
393 ALLOCATE(sm%S%XEMIS (ilu))
396 CALL
update_rad_sea(sm%S%CSEA_ALB,sm%S%XSST,pzenith,xtts,sm%S%XEMIS,sm%S%XDIR_ALB,&
397 sm%S%XSCA_ALB,pdir_alb,psca_alb,pemis,ptsrad, &
398 sm%S%LHANDLE_SIC,sm%S%XTICE,sm%S%XSIC,sm%S%XICE_ALB )
400 IF (sm%S%LHANDLE_SIC)
THEN
401 ptsurf(:) = sm%S%XSST(:) * ( 1 - sm%S%XSIC(:)) + sm%S%XTICE(:) * sm%S%XSIC(:)
403 ptsurf(:) = sm%S%XSST(:)
420 sm%CHS%CCH_NAMES, sm%CHS%CAER_NAMES, &
421 hdstnames=sm%CHS%CDSTNAMES, hsltnames=sm%CHS%CSLTNAMES )
425 IF (sm%CHS%SVS%NBEQ>0 .AND. sm%CHS%CCH_DRY_DEP==
'WES89')
THEN
426 ALLOCATE(sm%CHS%XDEP(ilu,sm%CHS%SVS%NBEQ))
428 ALLOCATE(sm%CHS%XDEP(0,0))
436 IF(.NOT.(sm%S%LHANDLE_SIC.OR.lcpl_seaice))
THEN
437 sm%DGSI%LDIAG_SEAICE=.false.
441 sm%DGO, sm%DGS, sm%DGSI, dgu, sm%S, &
449 IF (lhook) CALL dr_hook(
'INIT_SEAFLUX_N',1,zhook_handle)
subroutine update_rad_sea(HALB, PSST, PZENITH, PTT, PEMIS, PDIR_ALB, PSCA_ALB, PDIR_ALB_ATMOS, PSCA_ALB_ATMOS, PEMIS_ATMOS, PTRAD, OHANDLE_SIC, PTICE, PSIC, PICE_ALB, PU, PV)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine init_seaflux_n(DTCO, DGU, UG, U, SM, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
subroutine diag_seaflux_init_n(DGO, DGS, DGSI, DGU, S, HPROGRAM, KLU, KSW)
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine read_seaflux_n(DTCO, SG, S, U, HPROGRAM, KLUOUT)
subroutine read_default_seaflux_n(CHS, DGO, DGS, DGSI, O, S, HPROGRAM)
subroutine read_ocean_n(DTCO, O, OR, U, HPROGRAM)
subroutine read_seaice_n(SG, S, HPROGRAM, KLU, KLUOUT)
subroutine default_seaflux(PTSTEP, POUT_TSTEP, HSEA_ALB, HSEA_FLUX, OPWG, OPRECIP, OPWEBB, KZ0, KGRVWAVES, OPROGSST, KTIME_COUPLING, POCEAN_TSTEP, PICHCE, HINTERPOL_SST, HINTERPOL_SSS)
subroutine abor1_sfx(YTEXT)
subroutine read_seaflux_sbl_n(DTCO, S, SSB, U, HPROGRAM)
subroutine read_nam_prep_seaflux_n(HPROGRAM)
subroutine read_seaflux_conf_n(CHS, DGO, DGS, DGSI, O, S, HPROGRAM)
subroutine default_seaice(HPROGRAM, HINTERPOL_SIC, HINTERPOL_SIT, PFREEZING_SST, PSEAICE_TSTEP, PSIC_EFOLDING_TIME, PSIT_EFOLDING_TIME, PCD_ICE, PSI_FLX_DRV)
subroutine default_ch_dep(HCH_DRY_DEP)
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine prep_ctrl_seaflux(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDGET, OCOEF, OSURF_VARS, ODIAG_OCEAN, ODIAG_SEAICE, KLUOUT, OSURF_BUDGETC)
subroutine read_seaflux_date(O, HPROGRAM, HINIT, KLUOUT, HATMFILE, HATMFILETYPE, KYEAR, KMONTH, KDAY, PTIME, TPTIME)
subroutine default_diag_seaflux(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDGET, OCOEF, OSURF_VARS, ODIAG_OCEAN, ODIAG_SEAICE, OSURF_BUDGETC, ORESET_BUDGETC, PDIAG_TSTEP)
subroutine read_pgd_seaflux_n(DTCO, DTS, SG, S, U, HPROGRAM)
subroutine init_chemical_n(KLUOUT, KSV, HSV, YSV, HCH_NAMES, HAER_NAMES, HDSTNAMES, HSLTNAMES)