MFIX  2016-1
funits_mod.f
Go to the documentation of this file.
1  MODULE funits
2 
3 ! Whether this processor should write the log file in DMP mode.
4 ! Usually this flag is true only for PE_IO. All the PEs may be forced
5 ! to write a log file by setting ENABLE_DMP_LOG to .true. in output_mod.f.
6  LOGICAL :: dmp_log
7 
8 ! Flag indicated that the log was opened globally.
9  LOGICAL :: log_was_closed = .false.
10 
11 ! RRATES debug file unit number
12  INTEGER, PARAMETER :: unit_rrates = 43
13 
14 ! mfix.dat file unit number
15  INTEGER, PARAMETER :: unit_dat = 51
16 
17 ! RUN_NAME.OUT file unit number
18  INTEGER, PARAMETER :: unit_out = 52
19 
20 ! RUN_NAME.LOG file unit number. (DEFAULT/Serial 53)
21  INTEGER, PARAMETER :: unit_log = 53
22 
23 ! Temporary (scratch) file unit number
24  INTEGER, PARAMETER :: unit_tmp = 54
25 
26 ! RUN_NAME.RES file unit number
27  INTEGER, PARAMETER :: unit_res = 55
28 
29 ! RUN_NAME.SPx file unit offset number
30  INTEGER, PARAMETER :: unit_spx = 60
31 
32  CONTAINS
33 
34 
35 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
36 ! !
37 ! Module name: NEWUNIT !
38 ! Author: A. Choudhary Date: 01/21/2015 !
39 ! !
40 ! Purpose: Finds an open i/o unit number; Usage: !
41 ! integer myunit !
42 ! open(convert='big_endian',unit=newunit(myunit),file='filename') !
43 ! !
44 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
45  INTEGER FUNCTION newunit(unit)
46  IMPLICIT NONE
47 
48 ! optional variable to hold unit number
49  INTEGER, INTENT(OUT), OPTIONAL :: unit
50 ! lower and upper limits to search for available units
51  INTEGER, PARAMETER :: lun_min = 100, lun_max= 999
52 ! check to see if the unit is open
53  LOGICAL :: is_open
54 ! looping variable
55  INTEGER :: lun
56 
57  newunit = -1
58 
59  DO lun = lun_min, lun_max
60  INQUIRE(unit=lun, opened=is_open)
61  IF(.NOT.is_open) THEN
62  newunit = lun
63  EXIT
64  END IF
65  END DO
66 
67  IF(present(unit)) unit=newunit
68 
69  RETURN
70  END FUNCTION newunit
71 
72 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
73 ! !
74 ! Module name: CREATE_DIR !
75 ! Author: J.Musser Date: 06/2015 !
76 ! !
77 ! Purpose: Create the directory pDIR in the run directory. !
78 ! !
79 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
80  SUBROUTINE create_dir(PDIR)
81 
82  use compar, only: mype, pe_io
83 
84  IMPLICIT NONE
85 
86  CHARACTER(LEN=*), INTENT(IN) :: pDIR
87 
88  CHARACTER(LEN=256) :: CMD
89  INTEGER :: IOS
90  INTEGER, PARAMETER :: tUNIT = 9638
91 
92  IF(mype /= pe_io) RETURN
93 
94  OPEN(file=trim(pdir)//'/tmp',unit=tunit,status='NEW',iostat=ios)
95 
96  IF(ios == 0 )THEN
97  close(tunit)
98  WRITE(cmd,"('rm ',A,'/tmp')")adjustl(trim(pdir))
99  CALL system(trim(cmd))
100  ELSE
101  write(*,"('Creating directory ',A)") pdir
102  WRITE(cmd,"('mkdir ',A)")pdir
103  CALL system(trim(cmd))
104  ENDIF
105 
106  RETURN
107  END SUBROUTINE create_dir
108 
109 
110  END MODULE funits
logical dmp_log
Definition: funits_mod.f:6
integer, parameter unit_out
Definition: funits_mod.f:18
integer pe_io
Definition: compar_mod.f:30
subroutine create_dir(PDIR)
Definition: funits_mod.f:81
integer function newunit(unit)
Definition: funits_mod.f:46
integer, parameter unit_spx
Definition: funits_mod.f:30
integer, parameter unit_log
Definition: funits_mod.f:21
integer mype
Definition: compar_mod.f:24
logical log_was_closed
Definition: funits_mod.f:9
integer, parameter unit_tmp
Definition: funits_mod.f:24
integer, parameter unit_res
Definition: funits_mod.f:27
integer, parameter unit_rrates
Definition: funits_mod.f:12
integer, parameter unit_dat
Definition: funits_mod.f:15