File: RELATIVE:/../../../mfix.git/model/funits_mod.f

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              write(*,*) 'The directory already exists.'
98              close(tUNIT)
99              WRITE(CMD,"('rm ',A,'/tmp')")adjustl(trim(pDIR))
100              CALL SYSTEM(trim(CMD))
101           ELSE
102              write(*,*) 'Creating the directory.'
103              WRITE(CMD,"('mkdir ',A)")pDIR
104              CALL SYSTEM(trim(CMD))
105           ENDIF
106     
107           RETURN
108           END SUBROUTINE CREATE_DIR
109     
110     
111           END MODULE FUNITS
112