7 HPROGRAM,HINIT,KI,KSV,KSW, &
8 HSV,PCO2,PRHOA,PZENITH,PAZIM,PSW_BANDS, &
9 PDIR_ALB,PSCA_ALB, PEMIS,PTSRAD,PTSURF, &
10 KYEAR, KMONTH,KDAY,PTIME, &
11 HATMFILE,HATMFILETYPE,HTEST )
64 USE modd_snow_par
, ONLY : xz0hsn
70 USE modi_init_io_surf_n
71 USE modi_default_ch_dep
73 USE modi_default_seaflux
74 USE modi_default_diag_seaflux
75 USE modi_read_default_seaflux_n
76 USE modi_read_seaflux_conf_n
77 USE modi_read_seaflux_n
81 USE modi_default_seaice
82 USE modi_read_seaice_n
84 USE modi_read_pgd_seaflux_n
85 USE modi_diag_seaflux_init_n
86 USE modi_diag_seaice_init_n
87 USE modi_end_io_surf_n
90 USE modi_read_seaflux_date
91 USE modi_read_nam_prep_seaflux_n
92 USE modi_init_chemical_n
93 USE modi_prep_ctrl_seaflux
94 USE modi_update_rad_sea
98 USE modi_set_surfex_filein
116 LOGICAL,
INTENT(IN) :: OREAD_BUDGETC
118 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
119 CHARACTER(LEN=3),
INTENT(IN) :: HINIT
120 INTEGER,
INTENT(IN) :: KI
121 INTEGER,
INTENT(IN) :: KSV
122 INTEGER,
INTENT(IN) :: KSW
123 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN) :: HSV
124 REAL,
DIMENSION(KI),
INTENT(IN) :: PCO2
125 REAL,
DIMENSION(KI),
INTENT(IN) :: PRHOA
126 REAL,
DIMENSION(KI),
INTENT(IN) :: PZENITH
127 REAL,
DIMENSION(KI),
INTENT(IN) :: PAZIM
128 REAL,
DIMENSION(KSW),
INTENT(IN) :: PSW_BANDS
129 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: PDIR_ALB
130 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: PSCA_ALB
131 REAL,
DIMENSION(KI),
INTENT(OUT) :: PEMIS
132 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTSRAD
133 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTSURF
134 INTEGER,
INTENT(IN) :: KYEAR
135 INTEGER,
INTENT(IN) :: KMONTH
136 INTEGER,
INTENT(IN) :: KDAY
137 REAL,
INTENT(IN) :: PTIME
140 CHARACTER(LEN=28),
INTENT(IN) :: HATMFILE
141 CHARACTER(LEN=6),
INTENT(IN) :: HATMFILETYPE
142 CHARACTER(LEN=2),
INTENT(IN) :: HTEST
151 REAL(KIND=JPRB) :: ZHOOK_HANDLE
157 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
213 sm%S%LINTERPOL_SST=.false.
214 sm%S%LINTERPOL_SSS=.false.
215 sm%S%LINTERPOL_SIC=.false.
216 sm%S%LINTERPOL_SIT=.false.
219 IF(sm%SD%O%N2M<1)
THEN 220 CALL abor1_sfx(
'INIT_SEAFLUX_n: N2M must be set >0 in case of LCPL_SEA' 223 sm%S%CINTERPOL_SST=
'NONE ' 224 sm%S%CINTERPOL_SSS=
'NONE ' 225 sm%S%CINTERPOL_SIC=
'NONE ' 226 sm%S%CINTERPOL_SIT=
'NONE ' 228 IF(trim(sm%S%CINTERPOL_SST)/=
'NONE')
THEN 229 sm%S%LINTERPOL_SST=.true.
231 IF(trim(sm%S%CINTERPOL_SSS)/=
'NONE')
THEN 232 sm%S%LINTERPOL_SSS=.true.
234 IF(trim(sm%S%CINTERPOL_SIC)/=
'NONE')
THEN 235 sm%S%LINTERPOL_SIC=.true.
237 IF(trim(sm%S%CINTERPOL_SIT)/=
'NONE')
THEN 238 sm%S%LINTERPOL_SIT=.true.
250 sm%S%TTIME%TDATE%YEAR =
nundef 251 sm%S%TTIME%TDATE%MONTH=
nundef 252 sm%S%TTIME%TDATE%DAY =
nundef 265 CALL read_surf(hprogram,
'DTCUR',sm%S%TTIME,iresp)
291 IF (hinit/=
'ALL' .AND. hinit/=
'SOD')
THEN 292 IF (
lhook)
CALL dr_hook(
'INIT_SEAFLUX_N',1,zhook_handle)
305 IF(sm%S%LINTERPOL_SST.OR.sm%S%LINTERPOL_SSS.OR.sm%S%LINTERPOL_SIC.OR.sm%S%LINTERPOL_SIT
THEN 307 sm%S%TZTIME%TDATE%YEAR = sm%S%TTIME%TDATE%YEAR
308 sm%S%TZTIME%TDATE%MONTH = sm%S%TTIME%TDATE%MONTH
309 sm%S%TZTIME%TDATE%DAY = sm%S%TTIME%TDATE%DAY
310 sm%S%TZTIME%TIME = sm%S%TTIME%TIME
315 IF (hinit/=
'ALL')
THEN 317 IF (
lhook)
CALL dr_hook(
'INIT_SEAFLUX_N',1,zhook_handle)
329 ilu =
SIZE(sm%S%XCOVER,1)
331 ALLOCATE(sm%S%XSST_INI (ilu))
332 sm%S%XSST_INI(:) = sm%S%XSST(:)
334 ALLOCATE(sm%S%XZ0H(ilu))
335 WHERE (sm%S%XSST(:)>=
xtts)
336 sm%S%XZ0H(:) = sm%S%XZ0(:)
338 sm%S%XZ0H(:) = xz0hsn
347 IF(
lcpl_sea.OR.sm%S%LHANDLE_SIC)
THEN 349 ALLOCATE(sm%S%XUMER (ilu))
350 ALLOCATE(sm%S%XVMER (ilu))
357 ALLOCATE(sm%S%XUMER (0))
358 ALLOCATE(sm%S%XVMER (0))
363 ALLOCATE(sm%S%XTICE (ilu))
364 ALLOCATE(sm%S%XICE_ALB(ilu))
368 ALLOCATE(sm%S%XTICE (0))
369 ALLOCATE(sm%S%XICE_ALB(0))
383 ALLOCATE(sm%S%XEMIS (ilu))
388 IF (sm%S%LHANDLE_SIC)
THEN 389 ptsurf(:) = sm%S%XSST(:) * ( 1 - sm%S%XSIC(:)) + sm%S%XTICE(:) * sm%S%XSIC
391 ptsurf(:) = sm%S%XSST(:)
399 CALL read_sbl_n(dtco, u, sm%SB, sm%S%LSBL, hprogram,
"SEA ")
407 sm%CHS%CCH_NAMES, sm%CHS%CAER_NAMES, &
408 hdstnames=sm%CHS%CDSTNAMES, hsltnames=sm%CHS%CSLTNAMES
412 IF (sm%CHS%SVS%NBEQ>0 .AND. sm%CHS%CCH_DRY_DEP==
'WES89')
THEN 413 ALLOCATE(sm%CHS%XDEP(ilu,sm%CHS%SVS%NBEQ))
415 ALLOCATE(sm%CHS%XDEP(0,0))
424 sm%SD%DMI%LDIAG_MISC_SEAICE=.false.
439 IF (
lhook)
CALL dr_hook(
'INIT_SEAFLUX_N',1,zhook_handle)
subroutine init_chemical_n(KLUOUT, KSV, HSV, SV, HCH_NAMES, HAER_NAMES, HDSTNAMES, HSLTNAMES)
subroutine prep_ctrl_seaflux(DGO, ODIAG_OCEAN, ODIAG_MISC_SEAICE, KLU
subroutine default_seaflux(PTSTEP, POUT_TSTEP, HSEA_ALB, HSEA_FLUX,
subroutine read_pgd_seaflux_n(DTCO, DTS, SG, S, U, UG, GCP, HPROG
subroutine diag_seaice_init_n(DGO, DI, DIC, DGMSI, OREAD_BUDGETC,
subroutine read_seaflux_conf_n(CHS, DOC, DGO, DGMSI, O, S, HPROGR
subroutine default_diag_seaflux(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_B
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine diag_seaflux_init_n(DOC, DGO, D, DC, OREAD_BUDGETC, S,
subroutine read_ocean_n(DTCO, O, OR, U, HPROGRAM)
subroutine read_sbl_n(DTCO, U, SB, OSBL, HPROGRAM, HSURF)
subroutine abor1_sfx(YTEXT)
subroutine read_seaice_n(G, S, HPROGRAM, KLU, KLUOUT)
subroutine read_nam_prep_seaflux_n(HPROGRAM)
subroutine read_seaflux_n(DTCO, G, S, U, HPROGRAM, KLUOUT)
subroutine default_seaice(HPROGRAM, HINTERPOL_SIC, HINTERPOL_SIT, PFREEZING_SST, PSEAICE_TSTEP, PSIC_EFOLDING_TIME, PSIT_EFOLDING_TIME, PCD_ICE, PSI_FLX_DRV)
subroutine update_rad_sea(S, PZENITH, PTT, PDIR_ALB_ATMOS, PSCA_ALB_ATMOS, PEMIS_ATMOS, PTRAD, PU, PV)
integer, parameter nundef
subroutine read_default_seaflux_n(CHS, DOC, DGO, DGMSI, O, S, HPR
subroutine default_ch_dep(HCH_DRY_DEP)
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_seaflux_date(OMERCATOR, HPROGRAM, HINIT, KLUOUT, HATMFILE, HATMF
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION
subroutine init_seaflux_n(DTCO, OREAD_BUDGETC, UG, U, GCP, SM, HPROGRAM, HINIT, KI, KSV, KSW,