55 type(param_file_type),
optional,
intent(out) :: param_file
56 type(directories),
optional,
intent(out) :: dirs
57 logical,
optional,
intent(in) :: check_params
63 integer,
parameter :: npf = 5
64 character(len=240) :: &
65 parameter_filename(npf) =
' ', &
66 output_directory =
' ', &
67 restart_input_dir =
' ', &
68 restart_output_dir =
' ', &
71 character(len=240) :: output_dir
72 integer :: unit, io, ierr, valid_param_files
74 namelist /mom_input_nml/ output_directory, input_filename, parameter_filename, &
75 restart_input_dir, restart_output_dir
77 if (file_exists(
'input.nml'))
then 78 unit = open_namelist_file(file=
'input.nml')
80 call mom_error(fatal,
'Required namelist file input.nml does not exist.')
83 ierr=1 ;
do while (ierr /= 0)
84 read(unit, nml=mom_input_nml, iostat=io, end=10)
85 ierr = check_nml_error(io,
'MOM_input_nml')
87 10
call close_file(unit)
89 if (
present(dirs))
then 90 dirs%output_directory = slasher(ensembler(output_directory))
91 dirs%restart_output_dir = slasher(ensembler(restart_output_dir))
92 dirs%restart_input_dir = slasher(ensembler(restart_input_dir))
93 dirs%input_filename = ensembler(input_filename)
96 if (
present(param_file))
then 97 output_dir = slasher(ensembler(output_directory))
100 if (len_trim(trim(parameter_filename(io))) > 0)
then 101 call open_param_file(ensembler(parameter_filename(io)), param_file, &
102 check_params, doc_file_dir=output_dir)
103 valid_param_files = valid_param_files + 1
106 if (valid_param_files == 0)
call mom_error(fatal,
"There must be at "//&
107 "least 1 valid entry in input_filename in MOM_input_nml in input.nml.")