33 LOGICAL :: mud_density
34 LOGICAL :: mud_thickness
35 LOGICAL :: mud_viscosity
36 LOGICAL :: water_levels
40 LOGICAL :: atm_momentum
41 LOGICAL :: air_density
55 CHARACTER(15) :: timestart
56 CHARACTER(15) :: timestop
59 CHARACTER(256) :: tidal
64 CHARACTER(256) :: filename
65 CHARACTER(100) :: longitude
66 CHARACTER(100) :: latitude
67 CHARACTER(100) :: var(3)
68 CHARACTER(15) :: timeshift
81 SUBROUTINE w3nmlprnc (NDSI, INFILE, NML_FORCING, NML_FILE, IERR)
149 INTEGER,
INTENT(IN) :: NDSI
150 CHARACTER*(*),
INTENT(IN) :: INFILE
153 INTEGER,
INTENT(OUT) :: IERR
155 INTEGER,
SAVE :: IENT = 0
160 CALL strace (ient,
'W3NMLPRNC')
165 OPEN (
ndsn,
file=trim(infile)//
'.log', form=
'formatted', iostat=ierr)
167 WRITE (
ndse,
'(A)')
'ERROR: open full nml file '//trim(infile)//
'.log failed'
172 OPEN (ndsi,
file=trim(infile), form=
'formatted', status=
'old', iostat=ierr)
174 WRITE (
ndse,
'(A)')
'ERROR: open input file '//trim(infile)//
' failed'
265 INTEGER,
INTENT(IN) :: NDSI
271 namelist /forcing_nml/ forcing
273 INTEGER,
SAVE :: IENT = 0
278 CALL strace (ient,
'READ_FORCING_NML')
282 forcing%TIMESTART =
'19000101 000000'
283 forcing%TIMESTOP =
'29001231 000000'
285 forcing%FIELD%ICE_PARAM1 = .false.
286 forcing%FIELD%ICE_PARAM2 = .false.
287 forcing%FIELD%ICE_PARAM3 = .false.
288 forcing%FIELD%ICE_PARAM4 = .false.
289 forcing%FIELD%ICE_PARAM5 = .false.
290 forcing%FIELD%MUD_DENSITY = .false.
291 forcing%FIELD%MUD_THICKNESS = .false.
292 forcing%FIELD%MUD_VISCOSITY = .false.
293 forcing%FIELD%WATER_LEVELS = .false.
294 forcing%FIELD%CURRENTS = .false.
295 forcing%FIELD%WINDS = .false.
296 forcing%FIELD%WINDS_AST = .false.
297 forcing%FIELD%ATM_MOMENTUM = .false.
298 forcing%FIELD%AIR_DENSITY = .false.
299 forcing%FIELD%ICE_CONC = .false.
300 forcing%FIELD%ICE_BERG = .false.
301 forcing%FIELD%DATA_ASSIM = .false.
303 forcing%GRID%LATLON = .false.
304 forcing%GRID%ASIS = .false.
306 forcing%TIDAL =
'unset'
311 READ (ndsi, nml=forcing_nml, iostat=ierr, iomsg=
msg)
313 WRITE (
ndse,
'(A,/A)') &
314 'ERROR: READ_FORCING_NML: namelist read error', &
320 IF (forcing%TIDAL.NE.
'unset')
THEN
321 IF (.NOT. forcing%FIELD%WATER_LEVELS .AND. .NOT. forcing%FIELD%CURRENTS)
THEN
322 WRITE (
ndse,
'(A,I3)')
'ERROR: TIDAL must only be used on FIELD%WATER_LEVELS or FIELD%CURRENTS'
324 ELSE IF (.NOT. forcing%GRID%ASIS)
THEN
325 WRITE (
ndse,
'(A,I3)')
'ERROR: TIDAL must only be used on GRID%ASIS'
331 nml_forcing = forcing
404 INTEGER,
INTENT(IN) :: NDSI
410 namelist /file_nml/ file
412 INTEGER,
SAVE :: IENT = 0
417 CALL strace (ient,
'READ_FILE_NML')
421 file%FILENAME =
'unset'
422 file%LONGITUDE =
'unset'
423 file%LATITUDE =
'unset'
424 file%VAR(1) =
'unset'
425 file%VAR(2) =
'unset'
426 file%VAR(3) =
'unset'
427 file%TIMESHIFT =
'00000000 000000'
431 READ (ndsi, nml=file_nml, iostat=ierr, iomsg=
msg)
433 WRITE (
ndse,
'(A,/A)') &
434 'ERROR: READ_FILE_NML: namelist read error', &
516 INTEGER,
SAVE :: IENT = 0
520 CALL strace (ient,
'REPORT_FORCING_NML')
523 WRITE (
msg,
'(A)')
'FORCING % '
525 WRITE (
ndsn,10) trim(
msg),
'TIMESTART = ', trim(nml_forcing%TIMESTART)
526 WRITE (
ndsn,10) trim(
msg),
'TIMESTOP = ', trim(nml_forcing%TIMESTOP)
528 WRITE (
ndsn,13) trim(
msg),
'FIELD % ICE_PARAM1 = ', nml_forcing%FIELD%ICE_PARAM1
529 WRITE (
ndsn,13) trim(
msg),
'FIELD % ICE_PARAM2 = ', nml_forcing%FIELD%ICE_PARAM2
530 WRITE (
ndsn,13) trim(
msg),
'FIELD % ICE_PARAM3 = ', nml_forcing%FIELD%ICE_PARAM3
531 WRITE (
ndsn,13) trim(
msg),
'FIELD % ICE_PARAM4 = ', nml_forcing%FIELD%ICE_PARAM4
532 WRITE (
ndsn,13) trim(
msg),
'FIELD % ICE_PARAM5 = ', nml_forcing%FIELD%ICE_PARAM5
533 WRITE (
ndsn,13) trim(
msg),
'FIELD % MUD_DENSITY = ', nml_forcing%FIELD%MUD_DENSITY
534 WRITE (
ndsn,13) trim(
msg),
'FIELD % MUD_THICKNESS = ', nml_forcing%FIELD%MUD_THICKNESS
535 WRITE (
ndsn,13) trim(
msg),
'FIELD % MUD_VISCOSITY = ', nml_forcing%FIELD%MUD_VISCOSITY
536 WRITE (
ndsn,13) trim(
msg),
'FIELD % WATER_LEVELS = ', nml_forcing%FIELD%WATER_LEVELS
537 WRITE (
ndsn,13) trim(
msg),
'FIELD % CURRENTS = ', nml_forcing%FIELD%CURRENTS
538 WRITE (
ndsn,13) trim(
msg),
'FIELD % WINDS = ', nml_forcing%FIELD%WINDS
539 WRITE (
ndsn,13) trim(
msg),
'FIELD % WINDS_AST = ', nml_forcing%FIELD%WINDS_AST
540 WRITE (
ndsn,13) trim(
msg),
'FIELD % ATM_MOMENTUM = ', nml_forcing%FIELD%ATM_MOMENTUM
541 WRITE (
ndsn,13) trim(
msg),
'FIELD % AIR_DENSITY = ', nml_forcing%FIELD%AIR_DENSITY
542 WRITE (
ndsn,13) trim(
msg),
'FIELD % ICE_CONC = ', nml_forcing%FIELD%ICE_CONC
543 WRITE (
ndsn,13) trim(
msg),
'FIELD % ICE_BERG = ', nml_forcing%FIELD%ICE_BERG
544 WRITE (
ndsn,13) trim(
msg),
'FIELD % DATA_ASSIM = ', nml_forcing%FIELD%DATA_ASSIM
546 WRITE (
ndsn,13) trim(
msg),
'GRID % ASIS = ', nml_forcing%GRID%ASIS
547 WRITE (
ndsn,13) trim(
msg),
'GRID % LATLON = ', nml_forcing%GRID%LATLON
549 WRITE (
ndsn,10) trim(
msg),
'TIDAL = ', trim(nml_forcing%TIDAL)
553 13
FORMAT (a,2x,a,l1)
628 INTEGER,
SAVE :: IENT = 0
632 CALL strace (ient,
'REPORT_FILE_NML')
635 WRITE (
msg,
'(A)')
'FILE % '
637 WRITE (
ndsn,10) trim(
msg),
'FILENAME = ', trim(nml_file%FILENAME)
638 WRITE (
ndsn,10) trim(
msg),
'LONGITUDE = ', trim(nml_file%LONGITUDE)
639 WRITE (
ndsn,10) trim(
msg),
'LATITUDE = ', trim(nml_file%LATITUDE)
640 WRITE (
ndsn,10) trim(
msg),
'VAR(1) = ', trim(nml_file%VAR(1))
641 WRITE (
ndsn,10) trim(
msg),
'VAR(2) = ', trim(nml_file%VAR(2))
642 WRITE (
ndsn,10) trim(
msg),
'VAR(3) = ', trim(nml_file%VAR(3))
643 WRITE (
ndsn,10) trim(
msg),
'TIMESHIFT = ', trim(nml_file%TIMESHIFT)