63 INTEGER,
INTENT(IN) :: READ_ACTION
66 CHARACTER(LEN=*),
INTENT(IN) :: FILENAME
71 INTEGER,
PARAMETER :: MAXCOL = 80
73 CHARACTER(LEN=512) :: LINE_STRING
89 CHARACTER(len=256) :: STRING
93 LOGICAL :: READ_LOCKED, READ_FULL
97 INTEGER,
PARAMETER :: READ_MFIX = 0
98 INTEGER,
PARAMETER :: READ_POST = 1
99 INTEGER,
PARAMETER :: READ_INIT = 2
116 SELECT CASE(read_action)
124 read_locked = .false.
130 inquire(file=filename,exist=lexists)
131 IF(.NOT.lexists)
THEN 135 1000
FORMAT(2/,1
x,70(
'*')/
' From: READ_NAMELIST',/
' Error 1000: ', &
136 'The input data file, mfix.dat, is missing. Aborting.',/1
x, &
140 OPEN(unit=
unit_dat, file=filename, status=
'OLD', iostat=ios)
146 1001
FORMAT(2/,1
x,70(
'*')/
' From: READ_NAMELIST',/
' Error 1001: ', &
147 'Unable to open the mfix.dat file. Aborting.',/1
x,70(
'*'),2/)
153 READ (
unit_dat,
"(A)",iostat=ios) line_string
154 IF(ios < 0)
EXIT read_lp
156 line_no = line_no + 1
158 line_len =
seek_comment(line_string,len(line_string)) - 1
161 IF(line_len <= 0) cycle read_lp
165 WRITE (*, 1100) trim(
ival(line_no)), trim(
ival(maxcol)), &
166 line_string(1:maxcol)
170 1100
FORMAT(//1
x,70(
'*')/1
x,
'From: READ_NAMELIST',/1
x,
'Error 1100: ', &
171 'Line ',
a,
' in mfix.dat has is too long. Input lines should', &
172 /1
x,
'not pass column ',
a,
'.',2/3
x,
a,2/1
x,
'Please correct ', &
173 'the mfix.dat file.',/1
x,70(
'*'),2/)
176 IF(line_string(1:11) ==
'THERMO DATA')
EXIT read_lp
189 line_len = len(line_string)
215 LOGICAL,
INTENT(OUT) ::ERROR
221 include
'run_control.inc' 222 include
'physical_params.inc' 223 include
'numerical_params.inc' 224 include
'geometry.inc' 225 include
'gas_phase.inc' 226 include
'solids_phase.inc' 227 include
'tfm_solids.inc' 228 include
'initial_conditions.inc' 229 include
'boundary_conditions.inc' 230 include
'internal_surfaces.inc' 231 include
'point_sources.inc' 232 include
'output_control.inc' 233 include
'usr_hooks.inc' 234 include
'chem_equations.inc' 235 include
'dmp_batch_control.inc' 236 include
'desnamelist.inc' 237 include
'cartesian_grid_namelist.inc' 238 include
'qmomknamelist.inc' 240 include
'usrnlst.inc' 245 if(index(line_string,
'SPECIES_NAME') == 0 .AND. &
246 index(line_string,
'species_name') == 0 .AND. &
247 index(line_string,
'Species_Name') == 0 .AND. &
248 index(line_string,
'SPECIES_g') == 0 .AND. &
249 index(line_string,
'Species_g') == 0 .AND. &
250 index(line_string,
'species_g') == 0 .AND. &
251 index(line_string,
'SPECIES_s') == 0 .AND. &
252 index(line_string,
'Species_s') == 0 .AND. &
253 index(line_string,
'species_s') == 0) &
260 CALL parse_line (line_string, line_len, rxn_flag, read_flag)
264 IF(.NOT.read_flag)
RETURN 269 string=
''; string =
'&RUN_CONTROL_LOCKED '//&
270 trim(adjustl(line_string(1:line_len)))//
'/' 271 READ(string, nml=run_control_locked, iostat=ios)
275 string=
''; string =
'&RUN_CONTROL_UNLOCKED '//&
276 trim(adjustl(line_string(1:line_len)))//
'/' 277 READ(string, nml=run_control_unlocked, iostat=ios)
283 string=
''; string =
'&PHYSICAL_PARAM_LOCKED '//&
284 trim(adjustl(line_string(1:line_len)))//
'/' 285 READ(string, nml=physical_param_locked, iostat=ios)
289 string=
''; string =
'&PHYSICAL_PARAM_UNLOCKED '//&
290 trim(adjustl(line_string(1:line_len)))//
'/' 291 READ(string, nml=physical_param_unlocked, iostat=ios)
297 string=
''; string =
'&NUMERICAL_PARAM_LOCKED '//&
298 trim(adjustl(line_string(1:line_len)))//
'/' 299 READ(string, nml=numerical_param_locked, iostat=ios)
303 string=
''; string =
'&NUMERICAL_PARAM_UNLOCKED '//&
304 trim(adjustl(line_string(1:line_len)))//
'/' 305 READ(string, nml=numerical_param_unlocked, iostat=ios)
311 string=
''; string =
'&GEOMETRY_LOCKED '//&
312 trim(adjustl(line_string(1:line_len)))//
'/' 313 READ(string, nml=geometry_locked, iostat=ios)
317 string=
''; string =
'&GEOMETRY_UNLOCKED '//&
318 trim(adjustl(line_string(1:line_len)))//
'/' 319 READ(string, nml=geometry_unlocked, iostat=ios)
325 string=
''; string =
'&GAS_PHASE_LOCKED '//&
326 trim(adjustl(line_string(1:line_len)))//
'/' 327 READ(string, nml=gas_phase_locked, iostat=ios)
331 string=
''; string =
'&GAS_PHASE_UNLOCKED '//&
332 trim(adjustl(line_string(1:line_len)))//
'/' 333 READ(string, nml=gas_phase_unlocked, iostat=ios)
339 string=
''; string =
'&SOLIDS_PHASE_LOCKED '//&
340 trim(adjustl(line_string(1:line_len)))//
'/' 341 READ(string, nml=solids_phase_locked, iostat=ios)
345 string=
''; string =
'&SOLIDS_PHASE_UNLOCKED '//&
346 trim(adjustl(line_string(1:line_len)))//
'/' 347 READ(string, nml=solids_phase_unlocked, iostat=ios)
352 string=
''; string =
'&TFM_SOLIDS_UNLOCKED '//&
353 trim(adjustl(line_string(1:line_len)))//
'/' 354 READ(string, nml=tfm_solids_unlocked, iostat=ios)
360 string=
''; string =
'&INITIAL_CONDITIONS_LOCKED '//&
361 trim(adjustl(line_string(1:line_len)))//
'/' 362 READ(string, nml=initial_conditions_locked, iostat=ios)
366 string=
''; string =
'&INITIAL_CONDITIONS_UNLOCKED '//&
367 trim(adjustl(line_string(1:line_len)))//
'/' 368 READ(string, nml=initial_conditions_unlocked, iostat=ios)
374 string=
''; string =
'&BOUNDARY_CONDITIONS_LOCKED '//&
375 trim(adjustl(line_string(1:line_len)))//
'/' 376 READ(string, nml=boundary_conditions_locked, iostat=ios)
380 string=
''; string =
'&BOUNDARY_CONDITIONS_UNLOCKED '//&
381 trim(adjustl(line_string(1:line_len)))//
'/' 382 READ(string, nml=boundary_conditions_unlocked, iostat=ios)
388 string=
''; string =
'&INTERNAL_SURFACES_LOCKED '//&
389 trim(adjustl(line_string(1:line_len)))//
'/' 390 READ(string, nml=internal_surfaces_locked, iostat=ios)
394 string=
''; string =
'&INTERNAL_SURFACES_UNLOCKED '//&
395 trim(adjustl(line_string(1:line_len)))//
'/' 396 READ(string, nml=internal_surfaces_unlocked, iostat=ios)
401 string=
''; string =
'&POINT_SOURCES_UNLOCKED '//&
402 trim(adjustl(line_string(1:line_len)))//
'/' 403 READ(string, nml=point_sources_unlocked, iostat=ios)
409 string=
''; string =
'&OUTPUT_CONTROL_LOCKED '//&
410 trim(adjustl(line_string(1:line_len)))//
'/' 411 READ(string, nml=output_control_locked, iostat=ios)
415 string=
''; string =
'&OUTPUT_CONTROL_UNLOCKED '//&
416 trim(adjustl(line_string(1:line_len)))//
'/' 417 READ(string, nml=output_control_unlocked, iostat=ios)
422 string=
''; string =
'&USER_HOOKS_UNLOCKED '//&
423 trim(adjustl(line_string(1:line_len)))//
'/' 424 READ(string, nml=user_hooks_unlocked, iostat=ios)
429 string=
''; string =
'&CHEM_EQUATIONS_UNLOCKED '//&
430 trim(adjustl(line_string(1:line_len)))//
'/' 431 READ(string, nml=chem_equations_unlocked, iostat=ios)
437 string=
''; string =
'&DMP_BATCH_CONTROL_LOCKED '//&
438 trim(adjustl(line_string(1:line_len)))//
'/' 439 READ(string, nml=dmp_batch_control_locked, iostat=ios)
443 string=
''; string =
'&DMP_BATCH_CONTROL_UNLOCKED '//&
444 trim(adjustl(line_string(1:line_len)))//
'/' 445 READ(string, nml=dmp_batch_control_unlocked, iostat=ios)
451 string=
''; string =
'&LEGACY_LOCKED '//&
452 trim(adjustl(line_string(1:line_len)))//
'/' 453 READ(string, nml=legacy_locked, iostat=ios)
459 IF(.NOT.read_full)
RETURN 465 string=
''; string =
'&DES_INPUT_DATA '//&
466 trim(adjustl(line_string(1:line_len)))//
'/' 467 READ(string, nml=des_input_data, iostat=ios)
472 string=
''; string =
'&USR_INPUT_DATA '//&
473 trim(adjustl(line_string(1:line_len)))//
'/' 474 READ(string, nml=usr_input_data, iostat=ios)
479 string=
''; string =
'&CARTESIAN_GRID_INPUT_DATA '//&
480 trim(adjustl(line_string(1:line_len)))//
'/' 481 READ(string, nml=cartesian_grid_input_data, iostat=ios)
486 string=
''; string =
'&QMOMK_INPUT_DATA '//&
487 trim(adjustl(line_string(1:line_len)))//
'/' 488 READ(string, nml=qmomk_input_data, iostat=ios)
492 IF(read_locked) error = .true.
logical, dimension(dim_m) usr_ros
subroutine replace_tab(LINE_STRING, MAXCOL)
subroutine set_keyword(ERROR)
double precision, parameter undefined
integer function seek_comment(LINE, MAXCOL)
double precision, dimension(:), allocatable a
subroutine parse_line(LINE, LMAX, RXN_FLAG, READ_FLAG)
subroutine deprecated_or_unknown(LINE_NO, INPUT)
logical, dimension(dim_m) usr_difs
integer cmd_line_args_count
logical, dimension((dim_m *(dim_m-1)/2)+1) usr_fss
integer function line_too_big(LINE, LINE_LEN, MAXCOL)
logical, dimension(dim_m) usr_ks
logical, dimension(dim_m) usr_mus
character(len=80), dimension(100) cmd_line_args
subroutine read_namelist(READ_ACTION, FILENAME)
logical function blank_line(line)
logical, dimension(dim_m) usr_fgs
logical, dimension(dim_eqs) call_usr_source
integer, parameter unit_dat
subroutine make_upper_case(LINE_STRING, MAXCOL)
double precision, dimension(:), allocatable x
logical, dimension(dim_m) usr_cps
logical, dimension(dim_m) usr_gama