34
35
36
40 USE multi_fvm_mod
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "units_c.inc"
51
52
53
54
55 TYPE(INIMAP1D_STRUCT), INTENT(INOUT) :: INIMAP1D
56 CHARACTER(LEN=NCHARLINE),INTENT(INOUT) :: FILENAME
57 INTEGER, INTENT(IN) :: ID
58 CHARACTER(LEN=NCHARTITLE)::TITLE
59
60
61
62 CHARACTER MESS*40,BUFFER*14
63 CHARACTER(LEN=NCHARLINE) :: ROOTNAME
64 DATA mess/'INFILE'/
65 INTEGER NUM_CENTROIDS,N_CYCLE,K,ISUBMAT,NBMAT,NUM_NODE_VEL,INPUT_VERSION
66 my_real x_scale,y_scale,x_shift,y_shift,tt
67 INTEGER PREV, NEXT
68 INTEGER :: LEN, LEN_TMP_NAME
69 CHARACTER :: TMP_NAME*2048, FILNAM*2048
70 INTEGER :: IFILNAM(2048),II, NCYCLE, NCELL_TOT, INIVERS
71 LOGICAL FILE_EXIST
72
73
74
75 len = len_trim(filename)
76 filnam=filename(1:len)
77 IF(len >= 3)THEN
78 IF( filnam(len-2:len) == ".gz")THEN
79 filnam(len-2:len)=' '
80 len=len-3
81 ENDIF
82 ENDIF
85 tmp_name=filnam(1:len)
86 DO ii=1,len_tmp_name
87 ifilnam(ii)=ichar(tmp_name(ii:ii))
88 END DO
90 CALL open_c(ifilnam,len_tmp_name,7)
91 file_exist=.false.
92 inquire( file=trim(filename), exist=file_exist )
93 IF(.NOT.file_exist) THEN
94 inquire( file=trim(filename)//".gz", exist=file_exist )
95 IF(.NOT.file_exist) THEN
96 CALL ancmsg(msgid = 1884, anmode = aninfo, msgtype = msgerror, i1 =
id, c1=title)
97 inimap1d%CORRECTLY_READ = .false.
98 return
99 ENDIF
100 ENDIF
101
108
109 IF(.NOT.ALLOCATED(inimap1d%SUBMATALLOCATE
110
111
112 IF(.NOT.ALLOCATED(inimap1d%X))ALLOCATE(inimap1d%X(num_centroids))
113 CALL read_db( inimap1d%X(1),num_centroids)
115
116 DO k=1,num_centroids
117 inimap1d%X(k) = inimap1d%X(k)+x_shift
118 ENDDO
119
120
121 DO isubmat=1,nbmat
122 IF(.NOT.ALLOCATED(inimap1d%SUBMAT(isubmat)%VFRAC))ALLOCATE(inimap1d%SUBMAT(isubmat
123 CALL read_db( inimap1d%SUBMAT(isubmat)%VFRAC(1),num_centroids)
124 ENDDO
125
126 !---densities
127 DO isubmat=1,nbmat
128 IF(.NOT.ALLOCATED(inimap1d%SUBMAT(isubmat)%RHO))ALLOCATE(inimap1d%SUBMAT(isubmat)%RHO(num_centroids))
129 CALL read_db( inimap1d%SUBMAT(isubmat)%RHO(1),num_centroids)
130 ENDDO
131
132
133 DO isubmat=1,nbmat
134 IF(.NOT.ALLOCATED(inimap1d%SUBMAT(isubmat)%PRES))ALLOCATE(inimap1d%SUBMAT(isubmat)%PRES(num_centroids))
135 CALL read_db( inimap1d%SUBMAT(isubmat)%PRES(1),num_centroids)
136 ENDDO
137
138
139 IF(.NOT.ALLOCATED(inimap1d%VEL))ALLOCATE
140 IF(.NOT.ALLOCATED(inimap1d%X_VEL))ALLOCATE(inimap1d%X_VEL(num_node_vel))
141 IF(num_node_vel == num_centroids)THEN
142 CALL read_db( inimap1d%VEL(1),num_node_vel )
143 DO k=1, num_node_vel
144 inimap1d%X_VEL(k) = inimap1d%X(k)
145 ENDDO
146 ELSE
147 CALL read_db( inimap1d%X_VEL(1),num_node_vel )
148 CALL read_db( inimap1d%VEL(1),num_node_vel )
149 ENDIF
150
152
153
154
155
156
157
158
159
160
161
162
163
164 inimap1d%NBMAT = nbmat
165 inimap1d%NUM_CENTROIDS = num_centroids
166 inimap1d%NUM_NODE_VEL = num_node_vel
167 inimap1d%FUNC_VEL = -1
168 IF(.NOT.ALLOCATED(inimap1d%FUNC_ALPHA))ALLOCATE(inimap1d%FUNC_ALPHA(nbmat))
169 IF(.NOT.ALLOCATED(inimap1d%FUNC_RHO))ALLOCATE(inimap1d%FUNC_RHO(nbmat))
170 IF(.NOT.ALLOCATED(inimap1d%FUNC_ENER))ALLOCATE(inimap1d%FUNC_ENER(nbmat))
171 IF(.NOT.ALLOCATED(inimap1d%FUNC_PRES))ALLOCATE(inimap1d%FUNC_PRES(nbmat))
172 DO isubmat=1,nbmat
173 inimap1d%FUNC_ALPHA(isubmat) = -1
174 inimap1d%FUNC_RHO(isubmat) = -1
175 inimap1d%FUNC_ENER(isubmat) = -1
176 inimap1d%FUNC_PRES(isubmat) = -1
177 ENDDO
178
179 IF(.NOT.ALLOCATED(inimap1d%FAC_RHO))ALLOCATE(inimap1d%FAC_RHO(nbmat))
180 IF(.NOT.ALLOCATED(inimap1d%FAC_PRES_ENER))ALLOCATE(inimap1d%FAC_PRES_ENER(nbmat))
181 DO isubmat=1,nbmat
182 inimap1d%FAC_RHO(isubmat) = one
183 inimap1d%FAC_PRES_ENER(isubmat) = one
184 ENDDO
185 inimap1d%FAC_VEL = one
186
187
188 RETURN
189
190 999
CALL ancmsg(msgid = 1884, anmode = aninfo, msgtype = msgerror,
191 . i1 = inimap1d%ID, c1=inimap1d%TITLE)
192
193
character(len=outfile_char_len) outfile_name
integer, parameter nchartitle
integer, parameter ncharline
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
void read_i_c(int *w, int *len)
void open_c(int *ifil, int *len, int *mod)