File: /nfs/home/0/users/jenkins/mfix.git/model/open_file.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 SUBROUTINE OPEN_FILE(FILENAME, NB, IUNIT, EXT, FULL_NAME, &
23 OPEN_STAT, OPEN_ACCESS, OPEN_FORM, IRECL, IER)
24
25 use cdist
26 use compar
27
28 IMPLICIT NONE
29
30
31
32
33 CHARACTER(LEN=*), INTENT(IN) :: FILENAME
34
35 CHARACTER(LEN=*), INTENT(IN) :: EXT
36
37 CHARACTER(LEN=*), INTENT(INOUT) :: FULL_NAME
38
39 CHARACTER(LEN=*), INTENT(IN) :: OPEN_STAT
40
41 CHARACTER(LEN=*), INTENT(IN) :: OPEN_ACCESS
42
43 CHARACTER(LEN=*) OPEN_FORM
44
45 INTEGER, INTENT(IN) :: NB
46
47 INTEGER, INTENT(IN) :: IUNIT
48
49 INTEGER, INTENT(IN) :: IRECL
50
51
52
53
54
55 INTEGER, INTENT(OUT) :: IER
56
57
58
59
60 LOGICAL :: FILE_EXISTS
61
62
63 LOGICAL :: RES_IDX
64 LOGICAL :: SPX_IDX
65 LOGICAL :: USE_IDX
66
67
68 = 0
69
70
71 = (myPE .NE. PE_IO) .OR. (.NOT.bStart_with_one_RES)
72
73 = .TRUE.
74
75
76 = bDist_IO .AND. ( &
77 (SPX_IDX .AND. (EXT(2:3) .EQ. 'SP')) .OR. &
78 (RES_IDX .AND. (EXT(2:4) .EQ. 'RES')))
79
80
81 = ''
82 IF(USE_IDX)THEN
83 WRITE(FULL_NAME,1000) FILENAME(1:NB-1), myPE, EXT(1:4)
84 ELSE
85 WRITE(FULL_NAME,1001) FILENAME(1:NB-1), EXT(1:4)
86 ENDIF
87
88
89 INQUIRE(FILE=trim(FULL_NAME),EXIST=FILE_EXISTS)
90
91
92 IF(FILE_EXISTS .AND. (OPEN_STAT == 'NEW')) THEN
93 IER = 100; RETURN
94
95 ELSEIF(.NOT. FILE_EXISTS .AND. OPEN_STAT .EQ. 'OLD') THEN
96 IER = 101; RETURN
97 ENDIF
98
99
100 IF (OPEN_ACCESS == 'DIRECT') THEN
101 OPEN (UNIT=IUNIT, FILE=trim(FULL_NAME), STATUS=OPEN_STAT, &
102 RECL=IRECL, ACCESS=OPEN_ACCESS, FORM=OPEN_FORM, IOSTAT=IER)
103 ELSE
104
105
106 IF(.NOT.FILE_EXISTS) THEN
107 OPEN(UNIT=IUNIT, FILE=trim(FULL_NAME), STATUS='NEW', &
108 ACCESS=OPEN_ACCESS, FORM=OPEN_FORM, IOSTAT=IER)
109 ELSEIF(OPEN_STAT == 'REPLACE') THEN
110 OPEN(UNIT=IUNIT, FILE=trim(FULL_NAME), STATUS=OPEN_STAT, &
111 ACCESS=OPEN_ACCESS, FORM=OPEN_FORM, IOSTAT=IER)
112 ELSEIF(OPEN_STAT == 'APPEND' .OR. OPEN_STAT == 'UNKNOWN') THEN
113 OPEN(UNIT=IUNIT, FILE=trim(FULL_NAME), STATUS='UNKNOWN', &
114 ACCESS=OPEN_ACCESS, FORM=OPEN_FORM, POSITION='APPEND', &
115 IOSTAT=IER)
116 ELSE
117 IER = 102
118 ENDIF
119 ENDIF
120
121 RETURN
122
123 1000 FORMAT(A,'_',I5.5,A4)
124 1001 FORMAT(A,A4)
125
126 END SUBROUTINE OPEN_FILE
127