36
37
38
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "units_c.inc"
53
54
55
56 TYPE(INIMAP2D_STRUCT), INTENT(INOUT) :: INIMAP2D
57 CHARACTER(LEN=NCHARLINE), INTENT(INOUT) :: FILENAME
58 INTEGER, INTENT(IN) :: ID
59 CHARACTER(LEN=NCHARTITLE)::TITLE
60
61
62
63 INTEGER USR2SYS
64
65
66
67 CHARACTER MESS*40,BUFFER*14
68 CHARACTER(LEN=NCHARLINE) :: ROOTNAME
69 DATA mess/'INFILE'/
70 INTEGER NUM_CENTROIDS,N_CYCLE,K,ISUBMAT,NBMAT,NUM_NODE_VEL,INPUT_VERSION,NB_COMP
71 my_real x_scale,y_scale,x_shift,y_shift,tt
72 INTEGER :: LEN, LEN_TMP_NAME
73 CHARACTER :: TMP_NAME*2048, FILNAM*204
74 INTEGER :: IFILNAM(2048),II, NCYCLE, NCELL_TOT, INIVERS
75 LOGICAL FILE_EXIST
76
77
78
79 len = len_trim(filename)
80 filnam=filename(:len)
81 IF(len >= 3)THEN
82 IF( filnam(len-2:len) == ".gz")THEN
83 filnam(len-2:len)=' '
84 len=len-3
85 ENDIF
86 ENDIF
88
89 tmp_name=filnam(1:len)
90 DO ii=1,len_tmp_name
91 ifilnam(ii)=ichar(tmp_name(ii:ii))
92 END DO
94 CALL open_c(ifilnam,len_tmp_name,7)
95 file_exist=.false.
96 inquire( file=trim(filename), exist=file_exist )
97 IF(.NOT.file_exist) THEN
98 inquire( file=trim(filename)//".gz", exist=file_exist )
99 IF(.NOT.file_exist) THEN
100 CALL ancmsg(msgid = 1885, anmode = aninfo, msgtype = msgerror, i1 =
id, c1=title)
101 inimap2d%CORRECTLY_READ = .false.
102 return
103 ENDIF
104 ENDIF
105
112
113 IF(.NOT.ALLOCATED(inimap2d%SUBMAT))ALLOCATE(inimap2d%SUBMAT(nbmat))
114
115
116 IF(.NOT.ALLOCATED(inimap2d%XVAL))ALLOCATE(inimap2d%XVAL(2,num_centroids))
117 DO k=1,num_centroids
118 CALL read_db(inimap2d%XVAL(1,k),1)
119 ENDDO
120 DO k=1,num_centroids
121 CALL read_db(inimap2d%XVAL(2,k),1)
122 ENDDO
123
124
125 DO isubmat=1,nbmat
126 IF(.NOT.ALLOCATED(inimap2d%SUBMAT(isubmat)%VFRAC))ALLOCATE(inimap2d%SUBMAT(isubmat)%VFRAC(1,num_centroids))
127 DO k=1, num_centroids
128 CALL read_db(inimap2d%SUBMAT(isubmat)%VFRAC(1,k),1)
129 ENDDO
130 ENDDO
131
132
133 DO isubmat=1,nbmat
134 IF(.NOT.ALLOCATED(inimap2d%SUBMAT(isubmat)%RHO))ALLOCATE(inimap2d%SUBMAT(isubmat)%RHO(1,num_centroids))
135 DO k=1, num_centroids
136 CALL read_db(inimap2d%SUBMAT(isubmat)%RHO(1,k),1)
137 ENDDO
138 ENDDO
139
140
141 DO isubmat=1,nbmat
142 IF(.NOT.ALLOCATED(inimap2d%SUBMAT(isubmat)%PRES))ALLOCATE(inimap2d%SUBMAT(isubmat)%PRES(1,num_centroids))
143 DO k=1, num_centroids
144 CALL read_db(inimap2d%SUBMAT(isubmat)%PRES(1,k),1)
145 ENDDO
146 ENDDO
147
148
149 IF(.NOT.ALLOCATED(inimap2d%XVAL_V))ALLOCATE(inimap2d%XVAL_V(2,num_node_vel))
150 IF(.NOT.ALLOCATED(inimap2d%VEL))ALLOCATE(inimap2d%VEL(2,num_node_vel
151 IF(num_node_vel == num_centroids)THEN
152 DO k=1, num_node_vel
153 CALL read_db( inimap2d%VEL(1,k), 1)
154 inimap2d%XVAL_V(1,k) = inimap2d%XVAL(1,k)
155 ENDDO
156 DO k=1, num_node_vel
157 CALL read_db( inimap2d%VEL(2,k), 1)
158 inimap2d%XVAL_V(2,k) = inimap2d%XVAL(2,k)
159 ENDDO
160 ELSE
161 DO k=1, num_node_vel ;
CALL read_db( inimap2d%XVAL_V(1,k), 1) ;
ENDDO
162 DO k=1, num_node_vel ;
CALL read_db( inimap2d%XVAL_V(2,k), 1) ;
ENDDO
163 DO k=1, num_node_vel ;
CALL read_db( inimap2d%VEL(1,k), 1) ;
ENDDO
164 DO k=1, num_node_vel ;
CALL read_db( inimap2d%VEL(2,k), 1) ;
ENDDO
165 ENDIF
166
168
169 inimap2d%NBMAT = nbmat
170 inimap2d%NUM_CENTROIDS = num_centroids
171 inimap2d%NUM_NODE_VEL = num_node_vel
172 inimap2d%FUNC_VEL = -1
173 IF(.NOT.ALLOCATED(inimap2d%FUNC_ALPHA))ALLOCATE(inimap2d%FUNC_ALPHA(nbmat))
174 IF(.NOT.ALLOCATED(inimap2d%FUNC_RHO))ALLOCATE(inimap2d%FUNC_RHO(nbmat))
175 IF(.NOT.ALLOCATED(inimap2d%FUNC_ENER))ALLOCATE(inimap2d%FUNC_ENER(nbmat))
176 IF(.NOT.ALLOCATED(inimap2d%FUNC_PRES))ALLOCATE(inimap2d%FUNC_PRES(nbmat
177 DO isubmat=1,nbmat
178 inimap2d%FUNC_ALPHA(isubmat) = -1
179 inimap2d%FUNC_RHO(isubmat) = -1
180 inimap2d%FUNC_ENER(isubmat) = -1
181 inimap2d%FUNC_PRES(isubmat) = -1
182 ENDDO
183
184 IF(.NOT.ALLOCATED(inimap2d%FAC_RHO))ALLOCATE(inimap2d%FAC_RHO(nbmat))
185 IF(.NOT.ALLOCATED(inimap2d%FAC_PRES_ENER))ALLOCATE(inimap2d%FAC_PRES_ENER(nbmat))
186 DO isubmat=1,nbmat
187 inimap2d%FAC_RHO(isubmat) = one
188 inimap2d%FAC_PRES_ENER(isubmat) = one
189 ENDDO
190 inimap2d%FAC_VEL = one
191
192
193 RETURN
194
195 999
CALL ancmsg(msgid = 1885, anmode = aninfo, msgtype = msgerror,
196 . i1 = inimap2d%ID, c1
197
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)