1 | Linux R2.4.18-nec3.4p1.032 FORTRAN90/SX Rev.315 Thu Feb 9 10:37:47 2006 |
---|
2 | FILE NAME: i.flio_rbld.f90 |
---|
3 | PROGRAM NAME: flio_rbld |
---|
4 | SOURCE LIST |
---|
5 | |
---|
6 | LINE FORTRAN STATEMENT |
---|
7 | |
---|
8 | 1 !$Header: /home/ioipsl/CVSROOT/IOIPSL/tools/flio_rbld.f90,v 1.1 2005/10/10 07:36:45 adm Exp $ |
---|
9 | 2 PROGRAM flio_rbld |
---|
10 | 3 !!-------------------------------------------------------------------- |
---|
11 | 4 !! PROGRAM flio_rbld |
---|
12 | 5 !! |
---|
13 | 6 !! PURPOSE : |
---|
14 | 7 !! Recombine the files of MPI version of IOIPSL |
---|
15 | 8 !! along several dimensions. |
---|
16 | 9 !! |
---|
17 | 10 !! CALLING SEQUENCE : |
---|
18 | 11 !! |
---|
19 | 12 !! "flio_rbld" is usually invoked by the script "rebuild" |
---|
20 | 13 !! |
---|
21 | 14 !! rebuild -h |
---|
22 | 15 !! |
---|
23 | 16 !! rebuild [-v] -o outfile infile[1] ... infile[n] |
---|
24 | 17 !! |
---|
25 | 18 !! INPUT for "rebuild" : |
---|
26 | 19 !! |
---|
27 | 20 !! -h : help |
---|
28 | 21 !! -v : writing mode (silencious/verbose) |
---|
29 | 22 !! outfile : name of the recombined file. |
---|
30 | 23 !! infiles : names of the files that must be recombined. |
---|
31 | 24 !! |
---|
32 | 25 !! INPUT for "flio_rbld" : |
---|
33 | 26 !! |
---|
34 | 27 !! (C) c_w_mode : writing mode (silencious/verbose) |
---|
35 | 28 !! (I) f_nb : total number of files |
---|
36 | 29 !! (C) f_nm(:) : names of the files |
---|
37 | 30 !! |
---|
38 | 31 !! |
---|
39 | 32 !! ASSOCIATED MODULES : |
---|
40 | 33 !! IOIPSL(fliocom) |
---|
41 | 34 !! |
---|
42 | 35 !! RESTRICTIONS : |
---|
43 | 36 !! |
---|
44 | 37 !! Cases for character are not coded. |
---|
45 | 38 !! |
---|
46 | 39 !! Cases for netCDF variables such as array with more |
---|
47 | 40 !! than 5 dimensions are not coded. |
---|
48 | 41 !! |
---|
49 | 42 !! Input files must have the following global attributes : |
---|
50 | 43 !! |
---|
51 | 44 !! "DOMAIN_number_total" |
---|
52 | 45 !! "DOMAIN_number" |
---|
53 | 46 !! "DOMAIN_dimensions_ids" |
---|
54 | 47 !! "DOMAIN_size_global" |
---|
55 | 48 !! "DOMAIN_size_local" |
---|
56 | 49 !! "DOMAIN_position_first" |
---|
57 | 50 !! "DOMAIN_position_last" |
---|
58 | 51 !! "DOMAIN_halo_size_start" |
---|
59 | 52 !! "DOMAIN_halo_size_end" |
---|
60 | 53 !! "DOMAIN_type" |
---|
61 | 54 !! |
---|
62 | 55 !! NetCDF files must be smaller than 2 Gb. |
---|
63 | 56 !! |
---|
64 | 57 !! Character variables should have less than 257 letters |
---|
65 | 58 !! |
---|
66 | 59 !! EXAMPLE : |
---|
67 | 60 !! |
---|
68 | 61 !! rebuild -v -o sst.nc sst_[0-9][0-9][0-9][0-9].nc |
---|
69 | 62 !! |
---|
70 | 63 !! MODIFICATION HISTORY : |
---|
71 | 64 !! Sebastien Masson (smasson@jamstec.go.jp) March 2004 |
---|
72 | 65 !! Jacques Bellier (Jacques.Bellier@cea.fr) June 2005 |
---|
73 | 66 !!-------------------------------------------------------------------- |
---|
74 | 67 USE IOIPSL |
---|
75 | 68 USE defprec |
---|
76 | 69 !- |
---|
77 | 70 IMPLICIT NONE |
---|
78 | 71 !- |
---|
79 | 72 ! Character length |
---|
80 | 73 INTEGER,PARAMETER :: chlen=256 |
---|
81 | 74 !- |
---|
82 | 75 ! DO loops and test related variables |
---|
83 | 76 INTEGER :: i,ia,id,iv,iw,i_i,i_n |
---|
84 | 77 !- |
---|
85 | 78 ! Input arguments related variables |
---|
86 | 79 CHARACTER(LEN=15) :: c_w_mode |
---|
87 | 80 INTEGER :: f_nb |
---|
88 | 81 CHARACTER(LEN=chlen),DIMENSION(:),ALLOCATABLE :: f_nm |
---|
89 | 82 INTEGER,DIMENSION(:),ALLOCATABLE :: f_a_id |
---|
90 | 83 !- |
---|
91 | 84 ! Domains related variables |
---|
92 | 85 INTEGER :: d_n_t,i_ntd |
---|
93 | 86 INTEGER,DIMENSION(:),ALLOCATABLE :: dom_att,d_d_i,d_s_g |
---|
94 | 87 INTEGER,DIMENSION(:,:),ALLOCATABLE :: d_s_l,d_p_f,d_p_l,d_h_s,d_h_e |
---|
95 | 88 LOGICAL :: l_cgd,l_cof,l_col,l_o_f,l_o_l |
---|
96 | 89 CHARACTER(LEN=chlen) :: c_d_n |
---|
97 | 90 !- |
---|
98 | 91 ! Model files related variables |
---|
99 | 92 INTEGER :: f_id_i1,f_id_i,f_id_o |
---|
100 | 93 INTEGER :: f_d_nb,f_v_nb,f_a_nb,f_ul_d |
---|
101 | 94 INTEGER :: v_type,v_d_nb,v_a_nb |
---|
102 | 95 CHARACTER(LEN=chlen),DIMENSION(:),ALLOCATABLE :: & |
---|
103 | 96 & f_d_nm,f_v_nm,f_a_nm,v_a_nm |
---|
104 | 97 CHARACTER(LEN=chlen) :: f_u_nm |
---|
105 | 98 INTEGER,DIMENSION(:),ALLOCATABLE :: f_d_i,f_d_l |
---|
106 | 99 INTEGER :: a_l |
---|
107 | 100 INTEGER,DIMENSION(flio_max_var_dims) :: v_d_i,ib,ie |
---|
108 | 101 INTEGER,DIMENSION(:),ALLOCATABLE :: & |
---|
109 | 102 & io_i,io_n, ia_sf,io_sf,io_cf,ia_sm,io_sm,io_cm,ia_sl,io_sl,io_cl |
---|
110 | 103 LOGICAL :: l_ex |
---|
111 | 104 CHARACTER(LEN=chlen) :: c_wn1,c_wn2 |
---|
112 | 105 !- |
---|
113 | 106 !?INTEGERS of KIND 1 are not supported on all computers |
---|
114 | 107 !?INTEGER(KIND=i_1) :: i1_0d |
---|
115 | 108 !?INTEGER(KIND=i_1),DIMENSION(:),ALLOCATABLE :: i1_1d |
---|
116 | 109 !?INTEGER(KIND=i_1),DIMENSION(:,:),ALLOCATABLE :: i1_2d |
---|
117 | 110 !?INTEGER(KIND=i_1),DIMENSION(:,:,:),ALLOCATABLE :: i1_3d |
---|
118 | 111 !?INTEGER(KIND=i_1),DIMENSION(:,:,:,:),ALLOCATABLE :: i1_4d |
---|
119 | 112 !?INTEGER(KIND=i_1),DIMENSION(:,:,:,:,:),ALLOCATABLE :: i1_5d |
---|
120 | 113 INTEGER(KIND=i_2) :: i2_0d |
---|
121 | 114 INTEGER(KIND=i_2),DIMENSION(:),ALLOCATABLE :: i2_1d |
---|
122 | 115 INTEGER(KIND=i_2),DIMENSION(:,:),ALLOCATABLE :: i2_2d |
---|
123 | 116 INTEGER(KIND=i_2),DIMENSION(:,:,:),ALLOCATABLE :: i2_3d |
---|
124 | 117 INTEGER(KIND=i_2),DIMENSION(:,:,:,:),ALLOCATABLE :: i2_4d |
---|
125 | 118 INTEGER(KIND=i_2),DIMENSION(:,:,:,:,:),ALLOCATABLE :: i2_5d |
---|
126 | 119 INTEGER(KIND=i_4) :: i4_0d |
---|
127 | 120 INTEGER(KIND=i_4),DIMENSION(:),ALLOCATABLE :: i4_1d |
---|
128 | 121 INTEGER(KIND=i_4),DIMENSION(:,:),ALLOCATABLE :: i4_2d |
---|
129 | 122 INTEGER(KIND=i_4),DIMENSION(:,:,:),ALLOCATABLE :: i4_3d |
---|
130 | 123 INTEGER(KIND=i_4),DIMENSION(:,:,:,:),ALLOCATABLE :: i4_4d |
---|
131 | 124 INTEGER(KIND=i_4),DIMENSION(:,:,:,:,:),ALLOCATABLE :: i4_5d |
---|
132 | 125 REAL(KIND=r_4) :: r4_0d |
---|
133 | 126 REAL(KIND=r_4),DIMENSION(:),ALLOCATABLE :: r4_1d |
---|
134 | 127 REAL(KIND=r_4),DIMENSION(:,:),ALLOCATABLE :: r4_2d |
---|
135 | 128 REAL(KIND=r_4),DIMENSION(:,:,:),ALLOCATABLE :: r4_3d |
---|
136 | 129 REAL(KIND=r_4),DIMENSION(:,:,:,:),ALLOCATABLE :: r4_4d |
---|
137 | 130 REAL(KIND=r_8),DIMENSION(:,:,:,:,:),ALLOCATABLE :: r4_5d |
---|
138 | 131 REAL(KIND=r_8) :: r8_0d |
---|
139 | 132 REAL(KIND=r_8),DIMENSION(:),ALLOCATABLE :: r8_1d |
---|
140 | 133 REAL(KIND=r_8),DIMENSION(:,:),ALLOCATABLE :: r8_2d |
---|
141 | 134 REAL(KIND=r_8),DIMENSION(:,:,:),ALLOCATABLE :: r8_3d |
---|
142 | 135 REAL(KIND=r_8),DIMENSION(:,:,:,:),ALLOCATABLE :: r8_4d |
---|
143 | 136 REAL(KIND=r_8),DIMENSION(:,:,:,:,:),ALLOCATABLE :: r8_5d |
---|
144 | 137 !- |
---|
145 | 138 ! elapsed and cpu time computation variables |
---|
146 | 139 INTEGER :: nb_cc_ini,nb_cc_end,nb_cc_sec,nb_cc_max |
---|
147 | 140 REAL :: t_cpu_ini,t_cpu_end |
---|
148 | 141 !--------------------------------------------------------------------- |
---|
149 | 142 !- |
---|
150 | 143 !------------------- |
---|
151 | 144 ! INPUT arguments |
---|
152 | 145 !------------------- |
---|
153 | 146 !- |
---|
154 | 147 ! Retrieve the write mode |
---|
155 | 148 READ (UNIT=*,FMT='(A)') c_w_mode |
---|
156 | 149 !- |
---|
157 | 150 ! Retrieve the number of arguments |
---|
158 | 151 READ (UNIT=*,FMT=*) f_nb |
---|
159 | 152 !- |
---|
160 | 153 ! Retrieve the file names |
---|
161 | 154 ALLOCATE(f_nm(f_nb)) |
---|
162 | 155 DO iw=1,f_nb |
---|
163 | 156 READ (UNIT=*,FMT='(A)') f_nm(iw) |
---|
164 | 157 ENDDO |
---|
165 | 158 !- |
---|
166 | 159 IF (TRIM(c_w_mode) == 'verbose') THEN |
---|
167 | 160 WRITE (UNIT=*,FMT='("")') |
---|
168 | 161 WRITE (UNIT=*,FMT='(" mode : """,A,"""")') TRIM(c_w_mode) |
---|
169 | 162 WRITE (UNIT=*,FMT='(" nb_args : ",I4)') f_nb |
---|
170 | 163 WRITE (UNIT=*,FMT='(" Input files :")') |
---|
171 | 164 DO iw=1,f_nb-1 |
---|
172 | 165 WRITE (*,'(" ",A)') TRIM(f_nm(iw)) |
---|
173 | 166 ENDDO |
---|
174 | 167 WRITE (UNIT=*,FMT='(" Output file :")') |
---|
175 | 168 WRITE (*,'(" ",A)') TRIM(f_nm(f_nb)) |
---|
176 | 169 ENDIF |
---|
177 | 170 !- |
---|
178 | 171 IF (TRIM(c_w_mode) == 'verbose') THEN |
---|
179 | 172 !-- time initializations |
---|
180 | 173 CALL system_clock & |
---|
181 | 174 & (count=nb_cc_ini,count_rate=nb_cc_sec,count_max=nb_cc_max) |
---|
182 | 175 CALL cpu_time (t_cpu_ini) |
---|
183 | 176 ENDIF |
---|
184 | 177 !- |
---|
185 | 178 !--------------------------------------------------- |
---|
186 | 179 ! Retrieve basic informations from the first file |
---|
187 | 180 !--------------------------------------------------- |
---|
188 | 181 !- |
---|
189 | 182 ! Open the first file |
---|
190 | 183 CALL flioopfd (TRIM(f_nm(1)),f_id_i) |
---|
191 | 184 !- |
---|
192 | 185 ! Get the attribute "DOMAIN_number_total" |
---|
193 | 186 CALL fliogeta (f_id_i,"?","DOMAIN_number_total",d_n_t) |
---|
194 | 187 !- |
---|
195 | 188 ! Validate the number of input files : |
---|
196 | 189 ! must be equal to the total number |
---|
197 | 190 ! of domains used in the simulation |
---|
198 | 191 IF (d_n_t == (f_nb-1)) THEN |
---|
199 | 192 !--- |
---|
200 | 193 !-- Retrieve the basic characteristics of the first input file |
---|
201 | 194 CALL flioinqf & |
---|
202 | 195 & (f_id_i,nb_dim=f_d_nb,nb_var=f_v_nb,nb_gat=f_a_nb,id_uld=f_ul_d) |
---|
203 | 196 !--- |
---|
204 | 197 !-- Build the list of the names |
---|
205 | 198 !-- of the dimensions/variables/global_attributes |
---|
206 | 199 !-- and retrieve the unlimited_dimension name |
---|
207 | 200 !-- from the first input file |
---|
208 | 201 ALLOCATE(f_d_nm(f_d_nb),f_v_nm(f_v_nb),f_a_nm(f_a_nb)) |
---|
209 | 202 CALL flioinqn (f_id_i,cn_dim=f_d_nm,cn_var=f_v_nm, & |
---|
210 | 203 & cn_gat=f_a_nm,cn_uld=f_u_nm) |
---|
211 | 204 !--- |
---|
212 | 205 !-- Build the list of the dimensions identifiers and lengths |
---|
213 | 206 ALLOCATE(f_d_i(f_d_nb),f_d_l(f_d_nb)) |
---|
214 | 207 CALL flioinqf (f_id_i,id_dim=f_d_i,ln_dim=f_d_l) |
---|
215 | 208 ENDIF |
---|
216 | 209 !- |
---|
217 | 210 ! Close the file |
---|
218 | 211 CALL flioclo (f_id_i) |
---|
219 | 212 !- |
---|
220 | 213 IF (d_n_t /= (f_nb-1)) THEN |
---|
221 | 214 DEALLOCATE(f_nm) |
---|
222 | 215 CALL ipslerr (3,"flio_rbld", & |
---|
223 | 216 & "The number of input files", & |
---|
224 | 217 & "is not equal to the number of DOMAINS"," ") |
---|
225 | 218 ENDIF |
---|
226 | 219 !- |
---|
227 | 220 !---------------------------------------------------- |
---|
228 | 221 ! Retrieve domain informations for each input file |
---|
229 | 222 !---------------------------------------------------- |
---|
230 | 223 !- |
---|
231 | 224 ALLOCATE(f_a_id(f_nb-1)) |
---|
232 | 225 !- |
---|
233 | 226 !- |
---|
234 | 227 DO iw=1,f_nb-1 |
---|
235 | 228 !--- |
---|
236 | 229 CALL flioopfd (TRIM(f_nm(iw)),f_id_i) |
---|
237 | 230 f_a_id(iw) = f_id_i |
---|
238 | 231 !--- |
---|
239 | 232 IF (iw > 1) THEN |
---|
240 | 233 c_wn1 = "DOMAIN_number_total" |
---|
241 | 234 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
242 | 235 IF (l_ex) THEN |
---|
243 | 236 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),i_ntd) |
---|
244 | 237 IF (i_ntd /= d_n_t) THEN |
---|
245 | 238 CALL ipslerr (3,"flio_rbld", & |
---|
246 | 239 & "File : "//TRIM(f_nm(iw)), & |
---|
247 | 240 & "Attribute : "//TRIM(c_wn1), & |
---|
248 | 241 & "not equal to the one of the first file") |
---|
249 | 242 ENDIF |
---|
250 | 243 ELSE |
---|
251 | 244 CALL ipslerr (3,"flio_rbld", & |
---|
252 | 245 & "File : "//TRIM(f_nm(iw)), & |
---|
253 | 246 & "Attribute : "//TRIM(c_wn1),"not found") |
---|
254 | 247 ENDIF |
---|
255 | 248 ENDIF |
---|
256 | 249 !--- |
---|
257 | 250 c_wn1 = "DOMAIN_dimensions_ids" |
---|
258 | 251 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
259 | 252 IF (l_ex) THEN |
---|
260 | 253 ALLOCATE(dom_att(a_l)) |
---|
261 | 254 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),dom_att) |
---|
262 | 255 IF (iw == 1) THEN |
---|
263 | 256 ALLOCATE (d_d_i(a_l)) |
---|
264 | 257 d_d_i(:) = dom_att(:) |
---|
265 | 258 ELSEIF (SIZE(dom_att) /= SIZE(d_d_i)) THEN |
---|
266 | 259 CALL ipslerr (3,"flio_rbld", & |
---|
267 | 260 & "File : "//TRIM(f_nm(iw)), & |
---|
268 | 261 & "size of the attribute : "//TRIM(c_wn1), & |
---|
269 | 262 & "not equal to the one of the first file") |
---|
270 | 263 ELSEIF (ANY(dom_att(:) /= d_d_i(:))) THEN |
---|
271 | 264 CALL ipslerr (3,"flio_rbld", & |
---|
272 | 265 & "File : "//TRIM(f_nm(iw)), & |
---|
273 | 266 & "Attribute : "//TRIM(c_wn1), & |
---|
274 | 267 & "not equal to the one of the first file") |
---|
275 | 268 ENDIF |
---|
276 | 269 DEALLOCATE(dom_att) |
---|
277 | 270 ENDIF |
---|
278 | 271 !--- |
---|
279 | 272 c_wn1 = "DOMAIN_size_global" |
---|
280 | 273 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
281 | 274 IF (l_ex) THEN |
---|
282 | 275 IF (a_l /= SIZE(d_d_i)) THEN |
---|
283 | 276 CALL ipslerr (3,"flio_rbld", & |
---|
284 | 277 & "File : "//TRIM(f_nm(iw)), & |
---|
285 | 278 & "size of the attribute : "//TRIM(c_wn1), & |
---|
286 | 279 & "not equal to the size of DOMAIN_dimensions_ids") |
---|
287 | 280 ELSE |
---|
288 | 281 ALLOCATE(dom_att(a_l)) |
---|
289 | 282 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),dom_att) |
---|
290 | 283 IF (iw == 1) THEN |
---|
291 | 284 ALLOCATE (d_s_g(a_l)) |
---|
292 | 285 d_s_g(:)=dom_att(:) |
---|
293 | 286 ELSEIF (ANY(dom_att(:) /= d_s_g(:))) THEN |
---|
294 | 287 CALL ipslerr (3,"flio_rbld", & |
---|
295 | 288 & "File : "//TRIM(f_nm(iw)), & |
---|
296 | 289 & "Attribute : "//TRIM(c_wn1), & |
---|
297 | 290 & "not equal to the one of the first file") |
---|
298 | 291 ENDIF |
---|
299 | 292 DEALLOCATE(dom_att) |
---|
300 | 293 ENDIF |
---|
301 | 294 ELSE |
---|
302 | 295 CALL ipslerr (3,"flio_rbld", & |
---|
303 | 296 & "File : "//TRIM(f_nm(iw)), & |
---|
304 | 297 & "Attribute : "//TRIM(c_wn1),"not found") |
---|
305 | 298 ENDIF |
---|
306 | 299 !--- |
---|
307 | 300 c_wn1 = "DOMAIN_size_local" |
---|
308 | 301 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
309 | 302 IF (l_ex) THEN |
---|
310 | 303 IF (a_l /= SIZE(d_d_i)) THEN |
---|
311 | 304 CALL ipslerr (3,"flio_rbld", & |
---|
312 | 305 & "File : "//TRIM(f_nm(iw)), & |
---|
313 | 306 & "size of the attribute : "//TRIM(c_wn1), & |
---|
314 | 307 & "not equal to the size of DOMAIN_dimensions_ids") |
---|
315 | 308 ELSE |
---|
316 | 309 ALLOCATE(dom_att(a_l)) |
---|
317 | 310 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),dom_att) |
---|
318 | 311 IF (iw == 1) THEN |
---|
319 | 312 ALLOCATE (d_s_l(a_l,f_nb-1)) |
---|
320 | 313 ENDIF |
---|
321 | 314 d_s_l(:,iw)=dom_att(:) |
---|
322 | 315 DEALLOCATE(dom_att) |
---|
323 | 316 ENDIF |
---|
324 | 317 ELSE |
---|
325 | 318 CALL ipslerr (3,"flio_rbld", & |
---|
326 | 319 & "File : "//TRIM(f_nm(iw)), & |
---|
327 | 320 & "Attribute : "//TRIM(c_wn1),"not found") |
---|
328 | 321 ENDIF |
---|
329 | 322 !--- |
---|
330 | 323 c_wn1 = "DOMAIN_position_first" |
---|
331 | 324 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
332 | 325 IF (l_ex) THEN |
---|
333 | 326 IF (a_l /= SIZE(d_d_i)) THEN |
---|
334 | 327 CALL ipslerr (3,"flio_rbld", & |
---|
335 | 328 & "File : "//TRIM(f_nm(iw)), & |
---|
336 | 329 & "size of the attribute : "//TRIM(c_wn1), & |
---|
337 | 330 & "not equal to the size of DOMAIN_dimensions_ids") |
---|
338 | 331 ELSE |
---|
339 | 332 ALLOCATE(dom_att(a_l)) |
---|
340 | 333 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),dom_att) |
---|
341 | 334 IF (iw == 1) THEN |
---|
342 | 335 ALLOCATE (d_p_f(a_l,f_nb-1)) |
---|
343 | 336 ENDIF |
---|
344 | 337 d_p_f(:,iw)=dom_att(:) |
---|
345 | 338 DEALLOCATE(dom_att) |
---|
346 | 339 ENDIF |
---|
347 | 340 ELSE |
---|
348 | 341 CALL ipslerr (3,"flio_rbld", & |
---|
349 | 342 & "File : "//TRIM(f_nm(iw)), & |
---|
350 | 343 & "Attribute : "//TRIM(c_wn1),"not found") |
---|
351 | 344 ENDIF |
---|
352 | 345 !--- |
---|
353 | 346 c_wn1 = "DOMAIN_position_last" |
---|
354 | 347 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
355 | 348 IF (l_ex) THEN |
---|
356 | 349 IF (a_l /= SIZE(d_d_i)) THEN |
---|
357 | 350 CALL ipslerr (3,"flio_rbld", & |
---|
358 | 351 & "File : "//TRIM(f_nm(iw)), & |
---|
359 | 352 & "size of the attribute : "//TRIM(c_wn1), & |
---|
360 | 353 & "not equal to the size of DOMAIN_dimensions_ids") |
---|
361 | 354 ELSE |
---|
362 | 355 ALLOCATE(dom_att(a_l)) |
---|
363 | 356 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),dom_att) |
---|
364 | 357 IF (iw == 1) THEN |
---|
365 | 358 ALLOCATE (d_p_l(a_l,f_nb-1)) |
---|
366 | 359 ENDIF |
---|
367 | 360 d_p_l(:,iw)=dom_att(:) |
---|
368 | 361 DEALLOCATE(dom_att) |
---|
369 | 362 ENDIF |
---|
370 | 363 ELSE |
---|
371 | 364 CALL ipslerr (3,"flio_rbld", & |
---|
372 | 365 & "File : "//TRIM(f_nm(iw)), & |
---|
373 | 366 & "Attribute : "//TRIM(c_wn1),"not found") |
---|
374 | 367 ENDIF |
---|
375 | 368 !--- |
---|
376 | 369 c_wn1 = "DOMAIN_halo_size_start" |
---|
377 | 370 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
378 | 371 IF (l_ex) THEN |
---|
379 | 372 IF (a_l /= SIZE(d_d_i)) THEN |
---|
380 | 373 CALL ipslerr (3,"flio_rbld", & |
---|
381 | 374 & "File : "//TRIM(f_nm(iw)), & |
---|
382 | 375 & "size of the attribute : "//TRIM(c_wn1), & |
---|
383 | 376 & "not equal to the size of DOMAIN_dimensions_ids") |
---|
384 | 377 ELSE |
---|
385 | 378 ALLOCATE(dom_att(a_l)) |
---|
386 | 379 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),dom_att) |
---|
387 | 380 IF (iw == 1) THEN |
---|
388 | 381 ALLOCATE (d_h_s(a_l,f_nb-1)) |
---|
389 | 382 ENDIF |
---|
390 | 383 d_h_s(:,iw)=dom_att(:) |
---|
391 | 384 DEALLOCATE(dom_att) |
---|
392 | 385 ENDIF |
---|
393 | 386 ELSE |
---|
394 | 387 CALL ipslerr (3,"flio_rbld", & |
---|
395 | 388 & "File : "//TRIM(f_nm(iw)), & |
---|
396 | 389 & "Attribute : "//TRIM(c_wn1),"not found") |
---|
397 | 390 ENDIF |
---|
398 | 391 !--- |
---|
399 | 392 c_wn1 = "DOMAIN_halo_size_end" |
---|
400 | 393 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
401 | 394 IF (l_ex) THEN |
---|
402 | 395 IF (a_l /= SIZE(d_d_i)) THEN |
---|
403 | 396 CALL ipslerr (3,"flio_rbld", & |
---|
404 | 397 & "File : "//TRIM(f_nm(iw)), & |
---|
405 | 398 & "size of the attribute : "//TRIM(c_wn1), & |
---|
406 | 399 & "not equal to the size of DOMAIN_dimensions_ids") |
---|
407 | 400 ELSE |
---|
408 | 401 ALLOCATE(dom_att(a_l)) |
---|
409 | 402 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),dom_att) |
---|
410 | 403 IF (iw == 1) THEN |
---|
411 | 404 ALLOCATE (d_h_e(a_l,f_nb-1)) |
---|
412 | 405 ENDIF |
---|
413 | 406 d_h_e(:,iw)=dom_att(:) |
---|
414 | 407 DEALLOCATE(dom_att) |
---|
415 | 408 ENDIF |
---|
416 | 409 ELSE |
---|
417 | 410 CALL ipslerr (3,"flio_rbld", & |
---|
418 | 411 & "File : "//TRIM(f_nm(iw)), & |
---|
419 | 412 & "Attribute : "//TRIM(c_wn1),"not found") |
---|
420 | 413 ENDIF |
---|
421 | 414 !--- |
---|
422 | 415 c_wn1 = "DOMAIN_type" |
---|
423 | 416 c_wn2 = " " |
---|
424 | 417 CALL flioinqa (f_id_i,"?",TRIM(c_wn1),l_ex,a_l=a_l) |
---|
425 | 418 IF (l_ex) THEN |
---|
426 | 419 CALL fliogeta (f_id_i,"?",TRIM(c_wn1),c_wn2) |
---|
427 | 420 CALL strlowercase (c_wn2) |
---|
428 | 421 IF (iw == 1) THEN |
---|
429 | 422 IF ( (TRIM(c_wn2) == "box") & |
---|
430 | 423 & .OR.(TRIM(c_wn2) == "apple") ) THEN |
---|
431 | 424 c_d_n = c_wn2 |
---|
432 | 425 ELSE |
---|
433 | 426 CALL ipslerr (3,"flio_rbld", & |
---|
434 | 427 & "File : "//TRIM(f_nm(iw)), & |
---|
435 | 428 & "Attribute : "//TRIM(c_wn1), & |
---|
436 | 429 & "type "//TRIM(c_wn2)//" not (yet) supported") |
---|
437 | 430 ENDIF |
---|
438 | 431 ELSEIF (TRIM(c_wn2) /= TRIM(c_d_n)) THEN |
---|
439 | 432 CALL ipslerr (3,"flio_rbld", & |
---|
440 | 433 & "File : "//TRIM(f_nm(iw)), & |
---|
441 | 434 & "Attribute : "//TRIM(c_wn1), & |
---|
442 | 435 & "not equal to the one of the first file") |
---|
443 | 436 ENDIF |
---|
444 | 437 ELSE |
---|
445 | 438 CALL ipslerr (3,"flio_rbld", & |
---|
446 | 439 & "File : "//TRIM(f_nm(iw)), & |
---|
447 | 440 & "Attribute : "//TRIM(c_wn1),"not found") |
---|
448 | 441 ENDIF |
---|
449 | 442 !--- |
---|
450 | 443 !xxxxxxx |
---|
451 | 444 !xxxxxxx CALL flioclo (f_id_i) |
---|
452 | 445 !xxxxxxx |
---|
453 | 446 ENDDO |
---|
454 | 447 !- |
---|
455 | 448 IF (TRIM(c_w_mode) == 'verbose') THEN |
---|
456 | 449 WRITE (UNIT=*,FMT='("")') |
---|
457 | 450 WRITE (*,'(" From the first file : ")') |
---|
458 | 451 WRITE (*,'(" Number of dimensions : ",I2)') f_d_nb |
---|
459 | 452 WRITE (*,'(" Idents : ",(10(1X,I4),:))') f_d_i(1:f_d_nb) |
---|
460 | 453 WRITE (*,'(" Lengths : ",(10(1X,I4),:))') f_d_l(1:f_d_nb) |
---|
461 | 454 WRITE (*,'(" Names: ")') |
---|
462 | 455 DO i=1,f_d_nb |
---|
463 | 456 WRITE (*,'(" """,A,"""")') TRIM(f_d_nm(i)) |
---|
464 | 457 ENDDO |
---|
465 | 458 IF (f_ul_d > 0) THEN |
---|
466 | 459 WRITE (*,'(" Unlimited dimension id : ",I2)') f_d_i(f_ul_d) |
---|
467 | 460 ENDIF |
---|
468 | 461 WRITE (*,'(" Number of variables : ",I2)') f_v_nb |
---|
469 | 462 WRITE (*,'(" Names: ")') |
---|
470 | 463 DO i=1,f_v_nb |
---|
471 | 464 WRITE (*,'(" """,A,"""")') TRIM(f_v_nm(i)) |
---|
472 | 465 ENDDO |
---|
473 | 466 WRITE (*,'(" Number of global attributes : ",I2)') f_a_nb |
---|
474 | 467 WRITE (*,'(" Names: ")') |
---|
475 | 468 DO i=1,f_a_nb |
---|
476 | 469 WRITE (*,'(" """,A,"""")') TRIM(f_a_nm(i)) |
---|
477 | 470 ENDDO |
---|
478 | 471 WRITE (UNIT=*,FMT='("")') |
---|
479 | 472 WRITE (*,'(" From input files : ")') |
---|
480 | 473 WRITE (*,'(" Total number of DOMAINS : ",I4)') d_n_t |
---|
481 | 474 WRITE (*,'(" DOMAIN_dimensions_ids :",(10(1X,I5),:))') d_d_i(:) |
---|
482 | 475 WRITE (*,'(" DOMAIN_size_global :",(10(1X,I5),:))') d_s_g(:) |
---|
483 | 476 WRITE (*,'(" DOMAIN_type : """,(A),"""")') TRIM(c_d_n) |
---|
484 | 477 DO iw=1,f_nb-1 |
---|
485 | 478 WRITE (*,'(" File : ",A)') TRIM(f_nm(iw)) |
---|
486 | 479 WRITE (*,'(" d_s_l :",(10(1X,I5),:))') d_s_l(:,iw) |
---|
487 | 480 WRITE (*,'(" d_p_f :",(10(1X,I5),:))') d_p_f(:,iw) |
---|
488 | 481 WRITE (*,'(" d_p_l :",(10(1X,I5),:))') d_p_l(:,iw) |
---|
489 | 482 WRITE (*,'(" d_h_s :",(10(1X,I5),:))') d_h_s(:,iw) |
---|
490 | 483 IF (TRIM(c_d_n) == "apple") THEN |
---|
491 | 484 IF (COUNT(d_h_s(:,iw) /= 0) > 1) THEN |
---|
492 | 485 CALL ipslerr (3,"flio_rbld", & |
---|
493 | 486 & "Beginning offset is not yet supported", & |
---|
494 | 487 & "for more than one dimension"," ") |
---|
495 | 488 ENDIF |
---|
496 | 489 ENDIF |
---|
497 | 490 WRITE (*,'(" d_h_e :",(10(1X,I5),:))') d_h_e(:,iw) |
---|
498 | 491 IF (TRIM(c_d_n) == "apple") THEN |
---|
499 | 492 IF (COUNT(d_h_e(:,iw) /= 0) > 1) THEN |
---|
500 | 493 CALL ipslerr (3,"flio_rbld", & |
---|
501 | 494 & "Ending offset is not yet supported", & |
---|
502 | 495 & "for more than one dimension"," ") |
---|
503 | 496 ENDIF |
---|
504 | 497 ENDIF |
---|
505 | 498 ENDDO |
---|
506 | 499 ENDIF |
---|
507 | 500 !- |
---|
508 | 501 !--------------------------------------- |
---|
509 | 502 ! Create the dimensionned output file |
---|
510 | 503 !--------------------------------------- |
---|
511 | 504 !- |
---|
512 | 505 ! Define the dimensions used in the output file |
---|
513 | 506 DO id=1,f_d_nb |
---|
514 | 507 DO i=1,SIZE(d_d_i) |
---|
515 | 508 IF (f_d_i(id) == d_d_i(i)) THEN |
---|
516 | 509 f_d_l(id) = d_s_g(i) |
---|
517 | 510 ENDIF |
---|
518 | 511 ENDDO |
---|
519 | 512 ENDDO |
---|
520 | 513 !- |
---|
521 | 514 IF (f_ul_d > 0) THEN |
---|
522 | 515 i = f_d_l(f_ul_d); f_d_l(f_ul_d) = -1; |
---|
523 | 516 ENDIF |
---|
524 | 517 !- |
---|
525 | 518 ! Create the the output file |
---|
526 | 519 CALL fliocrfd (TRIM(f_nm(f_nb)),f_d_nm,f_d_l,f_id_o,c_f_n=c_wn1) |
---|
527 | 520 !- |
---|
528 | 521 IF (TRIM(c_w_mode) == 'verbose') THEN |
---|
529 | 522 WRITE (UNIT=*,FMT='("")') |
---|
530 | 523 WRITE (UNIT=*,FMT=*) "Output file : ",TRIM(c_wn1) |
---|
531 | 524 ENDIF |
---|
532 | 525 !- |
---|
533 | 526 IF (f_ul_d > 0) THEN |
---|
534 | 527 f_d_l(f_ul_d) = i |
---|
535 | 528 ENDIF |
---|
536 | 529 !xxxxxxx |
---|
537 | 530 !- |
---|
538 | 531 ! open the first input file used to build the output file |
---|
539 | 532 !- |
---|
540 | 533 !xxxxxxx CALL flioopfd (TRIM(f_nm(1)),f_id_i1) |
---|
541 | 534 f_id_i1 = f_a_id(1) |
---|
542 | 535 !xxxxxxx |
---|
543 | 536 !- |
---|
544 | 537 ! define the global attributes in the output file |
---|
545 | 538 ! copy all global attributes except those beginning by "DOMAIN_" |
---|
546 | 539 ! eventually actualize the "file_name" attribute |
---|
547 | 540 !- |
---|
548 | 541 DO ia=1,f_a_nb |
---|
549 | 542 IF (INDEX(TRIM(f_a_nm(ia)),"DOMAIN_") == 1) CYCLE |
---|
550 | 543 IF (TRIM(f_a_nm(ia)) == "file_name") THEN |
---|
551 | 544 CALL flioputa (f_id_o,"?",TRIM(f_a_nm(ia)),TRIM(c_wn1)) |
---|
552 | 545 ELSE |
---|
553 | 546 CALL fliocpya (f_id_i1,"?",TRIM(f_a_nm(ia)),f_id_o,"?") |
---|
554 | 547 ENDIF |
---|
555 | 548 ENDDO |
---|
556 | 549 !- |
---|
557 | 550 ! define the variables in the output file |
---|
558 | 551 !- |
---|
559 | 552 DO iv=1,f_v_nb |
---|
560 | 553 !-- get variable informations |
---|
561 | 554 CALL flioinqv & |
---|
562 | 555 & (f_id_i1,TRIM(f_v_nm(iv)),l_ex,v_t=v_type, & |
---|
563 | 556 & nb_dims=v_d_nb,id_dims=v_d_i,nb_atts=v_a_nb) |
---|
564 | 557 !-- define the new variable |
---|
565 | 558 IF (v_d_nb == 0) THEN |
---|
566 | 559 CALL fliodefv & |
---|
567 | 560 & (f_id_o,TRIM(f_v_nm(iv)),v_t=v_type) |
---|
568 | 561 ELSE |
---|
569 | 562 CALL fliodefv & |
---|
570 | 563 & (f_id_o,TRIM(f_v_nm(iv)),v_d_i(1:v_d_nb),v_t=v_type) |
---|
571 | 564 ENDIF |
---|
572 | 565 !-- copy all variable attributes |
---|
573 | 566 ALLOCATE(v_a_nm(v_a_nb)) |
---|
574 | 567 CALL flioinqv (f_id_i1,TRIM(f_v_nm(iv)),l_ex,cn_atts=v_a_nm) |
---|
575 | 568 DO ia=1,v_a_nb |
---|
576 | 569 CALL fliocpya & |
---|
577 | 570 & (f_id_i1,TRIM(f_v_nm(iv)),TRIM(v_a_nm(ia)), & |
---|
578 | 571 & f_id_o,TRIM(f_v_nm(iv))) |
---|
579 | 572 ENDDO |
---|
580 | 573 DEALLOCATE(v_a_nm) |
---|
581 | 574 ENDDO |
---|
582 | 575 !- |
---|
583 | 576 !------------------------ |
---|
584 | 577 ! Fill the output file |
---|
585 | 578 !------------------------ |
---|
586 | 579 !- |
---|
587 | 580 DO iv=1,f_v_nb |
---|
588 | 581 !-- get variable informations |
---|
589 | 582 CALL flioinqv & |
---|
590 | 583 & (f_id_i1,TRIM(f_v_nm(iv)),l_ex,v_t=v_type, & |
---|
591 | 584 & nb_dims=v_d_nb,id_dims=v_d_i) |
---|
592 | 585 IF (TRIM(c_w_mode) == 'verbose') THEN |
---|
593 | 586 WRITE (UNIT=*,FMT='("")') |
---|
594 | 587 WRITE (UNIT=*,FMT=*) "variable : ",TRIM(f_v_nm(iv)) |
---|
595 | 588 ENDIF |
---|
596 | 589 !-- do the variable contains dimensions to be recombined ? |
---|
597 | 590 l_cgd = .FALSE. |
---|
598 | 591 i_n = 1 |
---|
599 | 592 DO i=1,SIZE(d_d_i) |
---|
600 | 593 l_cgd = ANY(v_d_i(1:v_d_nb) == d_d_i(i)) |
---|
601 | 594 l_cgd = l_cgd.AND.ANY(d_s_l(i,1:f_nb-1) /= d_s_g(i)) |
---|
602 | 595 IF (l_cgd) THEN |
---|
603 | 596 i_n = f_nb-1 |
---|
604 | 597 EXIT |
---|
605 | 598 ENDIF |
---|
606 | 599 ENDDO |
---|
607 | 600 IF (v_d_nb > 0) THEN |
---|
608 | 601 !---- Allocate io_i,io_n,ia_sm,io_sm,io_cm |
---|
609 | 602 ALLOCATE(io_i(v_d_nb),io_n(v_d_nb)) |
---|
610 | 603 ALLOCATE(ia_sm(v_d_nb),io_sm(v_d_nb),io_cm(v_d_nb)) |
---|
611 | 604 !---- Default definition of io_i,io_n,io_sm,io_cm |
---|
612 | 605 io_i(:) = 1; io_n(:) = f_d_l(v_d_i(1:v_d_nb)); |
---|
613 | 606 ia_sm(:) = 1; io_sm(:) = 1; io_cm(:) = io_n(:); |
---|
614 | 607 !---- If needed, allocate offset |
---|
615 | 608 l_o_f = .FALSE.; l_o_l = .FALSE.; |
---|
616 | 609 IF (TRIM(c_d_n) == "apple") THEN |
---|
617 | 610 ALLOCATE(ia_sf(v_d_nb),io_sf(v_d_nb),io_cf(v_d_nb)) |
---|
618 | 611 ALLOCATE(ia_sl(v_d_nb),io_sl(v_d_nb),io_cl(v_d_nb)) |
---|
619 | 612 ia_sf(:) = 1; io_sf(:) = 1; io_cf(:) = io_n(:); |
---|
620 | 613 ia_sl(:) = 1; io_sl(:) = 1; io_cl(:) = io_n(:); |
---|
621 | 614 ENDIF |
---|
622 | 615 ENDIF |
---|
623 | 616 !-- |
---|
624 | 617 DO i_i=1,i_n |
---|
625 | 618 IF (l_cgd) THEN |
---|
626 | 619 !------ the variable contains dimensions to be recombined |
---|
627 | 620 !------ |
---|
628 | 621 !xxxxxxx |
---|
629 | 622 !------ open each file containing a small piece of data |
---|
630 | 623 !xxxxxxx CALL flioopfd (TRIM(f_nm(i_i)),f_id_i) |
---|
631 | 624 f_id_i = f_a_id(i_i) |
---|
632 | 625 !xxxxxxx |
---|
633 | 626 !------ |
---|
634 | 627 !------ do the variable has offset at first/last block ? |
---|
635 | 628 l_cof = .FALSE.; l_col = .FALSE.; |
---|
636 | 629 IF (TRIM(c_d_n) == "apple") THEN |
---|
637 | 630 L_BF: DO id=1,v_d_nb |
---|
638 | 631 DO i=1,SIZE(d_d_i) |
---|
639 | 632 IF (v_d_i(id) == d_d_i(i)) THEN |
---|
640 | 633 l_cof = (d_h_s(i,i_i) /= 0) |
---|
641 | 634 IF (l_cof) EXIT L_BF |
---|
642 | 635 ENDIF |
---|
643 | 636 ENDDO |
---|
644 | 637 ENDDO L_BF |
---|
645 | 638 L_BL: DO id=1,v_d_nb |
---|
646 | 639 DO i=1,SIZE(d_d_i) |
---|
647 | 640 IF (v_d_i(id) == d_d_i(i)) THEN |
---|
648 | 641 l_col = (d_h_e(i,i_i) /= 0) |
---|
649 | 642 IF (l_col) EXIT L_BL |
---|
650 | 643 ENDIF |
---|
651 | 644 ENDDO |
---|
652 | 645 ENDDO L_BL |
---|
653 | 646 ENDIF |
---|
654 | 647 !------ if needed, redefine start and count for dimensions |
---|
655 | 648 l_o_f = .FALSE.; l_o_l = .FALSE.; |
---|
656 | 649 DO id=1,v_d_nb |
---|
657 | 650 DO i=1,SIZE(d_d_i) |
---|
658 | 651 IF (v_d_i(id) == d_d_i(i)) THEN |
---|
659 | 652 io_n(id) = d_p_l(i,i_i)-d_p_f(i,i_i)+1 |
---|
660 | 653 ia_sm(id) = 1 |
---|
661 | 654 io_sm(id) = d_p_f(i,i_i) |
---|
662 | 655 io_cm(id) = io_n(id) |
---|
663 | 656 IF (TRIM(c_d_n) == "box") THEN |
---|
664 | 657 ia_sm(id) = ia_sm(id)+d_h_s(i,i_i) |
---|
665 | 658 io_sm(id) = io_sm(id)+d_h_s(i,i_i) |
---|
666 | 659 io_cm(id) = io_cm(id)-d_h_s(i,i_i)-d_h_e(i,i_i) |
---|
667 | 660 ELSEIF (TRIM(c_d_n) == "apple") THEN |
---|
668 | 661 IF (l_cof) THEN |
---|
669 | 662 IF (d_h_s(i,i_i) /= 0) THEN |
---|
670 | 663 ia_sf(id) = 1+d_h_s(i,i_i) |
---|
671 | 664 io_sf(id) = d_p_f(i,i_i)+d_h_s(i,i_i) |
---|
672 | 665 io_cf(id) = io_n(id)-d_h_s(i,i_i) |
---|
673 | 666 ELSE |
---|
674 | 667 io_sf(id) = d_p_f(i,i_i) |
---|
675 | 668 io_cf(id) = 1 |
---|
676 | 669 ia_sm(id) = ia_sm(id)+1 |
---|
677 | 670 io_sm(id) = io_sm(id)+1 |
---|
678 | 671 io_cm(id) = io_cm(id)-1 |
---|
679 | 672 l_o_f = .TRUE. |
---|
680 | 673 ENDIF |
---|
681 | 674 ENDIF |
---|
682 | 675 IF (l_col) THEN |
---|
683 | 676 IF (d_h_e(i,i_i) /= 0) THEN |
---|
684 | 677 ia_sl(id) = 1 |
---|
685 | 678 io_sl(id) = d_p_f(i,i_i) |
---|
686 | 679 io_cl(id) = io_n(id)-d_h_e(i,i_i) |
---|
687 | 680 ELSE |
---|
688 | 681 io_cm(id) = io_cm(id)-1 |
---|
689 | 682 ia_sl(id) = 1+io_n(id)-1 |
---|
690 | 683 io_sl(id) = d_p_f(i,i_i)+io_n(id)-1 |
---|
691 | 684 io_cl(id) = 1 |
---|
692 | 685 l_o_l = .TRUE. |
---|
693 | 686 ENDIF |
---|
694 | 687 ENDIF |
---|
695 | 688 ENDIF |
---|
696 | 689 ENDIF |
---|
697 | 690 ENDDO |
---|
698 | 691 ENDDO |
---|
699 | 692 ELSE |
---|
700 | 693 !------ the data can be read/write in one piece |
---|
701 | 694 f_id_i = f_id_i1 |
---|
702 | 695 ENDIF |
---|
703 | 696 !----- |
---|
704 | 697 IF (TRIM(c_w_mode) == 'verbose') THEN |
---|
705 | 698 WRITE (UNIT=*,FMT=*) TRIM(f_nm(i_i))//" - "//TRIM(f_v_nm(iv)) |
---|
706 | 699 WRITE (UNIT=*,FMT=*) "io_i : ",io_i(:) |
---|
707 | 700 WRITE (UNIT=*,FMT=*) "io_n : ",io_n(:) |
---|
708 | 701 WRITE (UNIT=*,FMT=*) "l_o_f : ",l_o_f |
---|
709 | 702 IF (l_o_f) THEN |
---|
710 | 703 WRITE (UNIT=*,FMT=*) "ia_sf : ",ia_sf(:) |
---|
711 | 704 WRITE (UNIT=*,FMT=*) "io_sf : ",io_sf(:) |
---|
712 | 705 WRITE (UNIT=*,FMT=*) "io_cf : ",io_cf(:) |
---|
713 | 706 ENDIF |
---|
714 | 707 WRITE (UNIT=*,FMT=*) "ia_sm : ",ia_sm(:) |
---|
715 | 708 WRITE (UNIT=*,FMT=*) "io_sm : ",io_sm(:) |
---|
716 | 709 WRITE (UNIT=*,FMT=*) "io_cm : ",io_cm(:) |
---|
717 | 710 WRITE (UNIT=*,FMT=*) "l_o_l : ",l_o_l |
---|
718 | 711 IF (l_o_l) THEN |
---|
719 | 712 WRITE (UNIT=*,FMT=*) "ia_sl : ",ia_sl(:) |
---|
720 | 713 WRITE (UNIT=*,FMT=*) "io_sl : ",io_sl(:) |
---|
721 | 714 WRITE (UNIT=*,FMT=*) "io_cl : ",io_cl(:) |
---|
722 | 715 ENDIF |
---|
723 | 716 ENDIF |
---|
724 | 717 !----- |
---|
725 | 718 !---- Cases according to the type, shape and offsets of the data |
---|
726 | 719 !----- |
---|
727 | 720 SELECT CASE (v_type) |
---|
728 | 721 !?INTEGERS of KIND 1 are not supported on all computers |
---|
729 | 722 !? CASE (flio_i1) !--- INTEGER 1 |
---|
730 | 723 !? SELECT CASE (v_d_nb) |
---|
731 | 724 !? CASE (0) !--- Scalar |
---|
732 | 725 !? CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i1_0d) |
---|
733 | 726 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)),i1_0d) |
---|
734 | 727 !? CASE (1) !--- 1d array |
---|
735 | 728 !? ALLOCATE(i1_1d(io_n(1))) |
---|
736 | 729 !? CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i1_1d, & |
---|
737 | 730 !? & start=io_i(:),count=io_n(:)) |
---|
738 | 731 !? IF (l_o_f) THEN |
---|
739 | 732 !? ib(1:1) = ia_sf(1:1); ie(1:1) = ib(1:1)+io_cf(1:1)-1; |
---|
740 | 733 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
741 | 734 !? & i1_1d(ib(1):ie(1)), & |
---|
742 | 735 !? & start=io_sf(:),count=io_cf(:)) |
---|
743 | 736 !? ENDIF |
---|
744 | 737 !? ib(1:1) = ia_sm(1:1); ie(1:1) = ib(1:1)+io_cm(1:1)-1; |
---|
745 | 738 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
746 | 739 !? & i1_1d(ib(1):ie(1)), & |
---|
747 | 740 !? & start=io_sm(:),count=io_cm(:)) |
---|
748 | 741 !? IF (l_o_l) THEN |
---|
749 | 742 !? ib(1:1) = ia_sl(1:1); ie(1:1) = ib(1:1)+io_cl(1:1)-1; |
---|
750 | 743 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
751 | 744 !? & i1_1d(ib(1):ie(1)), & |
---|
752 | 745 !? & start=io_sl(:),count=io_cl(:)) |
---|
753 | 746 !? ENDIF |
---|
754 | 747 !? DEALLOCATE(i1_1d) |
---|
755 | 748 !? CASE (2) !--- 2d array |
---|
756 | 749 !? ALLOCATE(i1_2d(io_n(1),io_n(2))) |
---|
757 | 750 !? CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i1_2d, & |
---|
758 | 751 !? & start=io_i(:),count=io_n(:)) |
---|
759 | 752 !? IF (l_o_f) THEN |
---|
760 | 753 !? ib(1:2) = ia_sf(1:2); ie(1:2) = ib(1:2)+io_cf(1:2)-1; |
---|
761 | 754 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
762 | 755 !? & i1_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
763 | 756 !? & start=io_sf(:),count=io_cf(:)) |
---|
764 | 757 !? ENDIF |
---|
765 | 758 !? ib(1:2) = ia_sm(1:2); ie(1:2) = ib(1:2)+io_cm(1:2)-1; |
---|
766 | 759 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
767 | 760 !? & i1_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
768 | 761 !? & start=io_sm(:),count=io_cm(:)) |
---|
769 | 762 !? IF (l_o_l) THEN |
---|
770 | 763 !? ib(1:2) = ia_sl(1:2); ie(1:2) = ib(1:2)+io_cl(1:2)-1; |
---|
771 | 764 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
772 | 765 !? & i1_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
773 | 766 !? & start=io_sl(:),count=io_cl(:)) |
---|
774 | 767 !? ENDIF |
---|
775 | 768 !? DEALLOCATE(i1_2d) |
---|
776 | 769 !? CASE (3) !--- 3d array |
---|
777 | 770 !? ALLOCATE(i1_3d(io_n(1),io_n(2),io_n(3))) |
---|
778 | 771 !? CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i1_3d, & |
---|
779 | 772 !? & start=io_i(:),count=io_n(:)) |
---|
780 | 773 !? IF (l_o_f) THEN |
---|
781 | 774 !? ib(1:3) = ia_sf(1:3); ie(1:3) = ib(1:3)+io_cf(1:3)-1; |
---|
782 | 775 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
783 | 776 !? & i1_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
784 | 777 !? & start=io_sf(:),count=io_cf(:)) |
---|
785 | 778 !? ENDIF |
---|
786 | 779 !? ib(1:3) = ia_sm(1:3); ie(1:3) = ib(1:3)+io_cm(1:3)-1; |
---|
787 | 780 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
788 | 781 !? & i1_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
789 | 782 !? & start=io_sm(:),count=io_cm(:)) |
---|
790 | 783 !? IF (l_o_l) THEN |
---|
791 | 784 !? ib(1:3) = ia_sl(1:3); ie(1:3) = ib(1:3)+io_cl(1:3)-1; |
---|
792 | 785 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
793 | 786 !? & i1_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
794 | 787 !? & start=io_sl(:),count=io_cl(:)) |
---|
795 | 788 !? ENDIF |
---|
796 | 789 !? DEALLOCATE(i1_3d) |
---|
797 | 790 !? CASE (4) !--- 4d array |
---|
798 | 791 !? ALLOCATE(i1_4d(io_n(1),io_n(2),io_n(3),io_n(4))) |
---|
799 | 792 !? CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i1_4d, & |
---|
800 | 793 !? & start=io_i(:),count=io_n(:)) |
---|
801 | 794 !? IF (l_o_f) THEN |
---|
802 | 795 !? ib(1:4) = ia_sf(1:4); ie(1:4) = ib(1:4)+io_cf(1:4)-1; |
---|
803 | 796 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
804 | 797 !? & i1_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
805 | 798 !? & start=io_sf(:),count=io_cf(:)) |
---|
806 | 799 !? ENDIF |
---|
807 | 800 !? ib(1:4) = ia_sm(1:4); ie(1:4) = ib(1:4)+io_cm(1:4)-1; |
---|
808 | 801 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
809 | 802 !? & i1_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
810 | 803 !? & start=io_sm(:),count=io_cm(:)) |
---|
811 | 804 !? IF (l_o_l) THEN |
---|
812 | 805 !? ib(1:4) = ia_sl(1:4); ie(1:4) = ib(1:4)+io_cl(1:4)-1; |
---|
813 | 806 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
814 | 807 !? & i1_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
815 | 808 !? & start=io_sl(:),count=io_cl(:)) |
---|
816 | 809 !? ENDIF |
---|
817 | 810 !? DEALLOCATE(i1_4d) |
---|
818 | 811 !? CASE (5) !--- 5d array |
---|
819 | 812 !? ALLOCATE(i1_5d(io_n(1),io_n(2),io_n(3),io_n(4),io_n(5))) |
---|
820 | 813 !? CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i1_5d, & |
---|
821 | 814 !? & start=io_i(:),count=io_n(:)) |
---|
822 | 815 !? IF (l_o_f) THEN |
---|
823 | 816 !? ib(1:5) = ia_sf(1:5); ie(1:5) = ib(1:5)+io_cf(1:5)-1; |
---|
824 | 817 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
825 | 818 !? & i1_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
826 | 819 !? & ib(4):ie(4),ib(5):ie(5)), & |
---|
827 | 820 !? & start=io_sf(:),count=io_cf(:)) |
---|
828 | 821 !? ENDIF |
---|
829 | 822 !? ib(1:5) = ia_sm(1:5); ie(1:5) = ib(1:5)+io_cm(1:5)-1; |
---|
830 | 823 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
831 | 824 !? & i1_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
832 | 825 !? & ib(4):ie(4),ib(5):ie(5)), & |
---|
833 | 826 !? & start=io_sm(:),count=io_cm(:)) |
---|
834 | 827 !? IF (l_o_l) THEN |
---|
835 | 828 !? ib(1:5) = ia_sl(1:5); ie(1:5) = ib(1:5)+io_cl(1:5)-1; |
---|
836 | 829 !? CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
837 | 830 !? & i1_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
838 | 831 !? & ib(4):ie(4),ib(5):ie(5)), & |
---|
839 | 832 !? & start=io_sl(:),count=io_cl(:)) |
---|
840 | 833 !? ENDIF |
---|
841 | 834 !? DEALLOCATE(i1_5d) |
---|
842 | 835 !? END SELECT |
---|
843 | 836 !? CASE (flio_i2) !--- INTEGER 2 |
---|
844 | 837 CASE (flio_i1,flio_i2) !--- INTEGER 1/INTEGER 2 |
---|
845 | 838 SELECT CASE (v_d_nb) |
---|
846 | 839 CASE (0) !--- Scalar |
---|
847 | 840 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i2_0d) |
---|
848 | 841 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)),i2_0d) |
---|
849 | 842 CASE (1) !--- 1d array |
---|
850 | 843 ALLOCATE(i2_1d(io_n(1))) |
---|
851 | 844 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i2_1d, & |
---|
852 | 845 & start=io_i(:),count=io_n(:)) |
---|
853 | 846 IF (l_o_f) THEN |
---|
854 | 847 ib(1:1) = ia_sf(1:1); ie(1:1) = ib(1:1)+io_cf(1:1)-1; |
---|
855 | 848 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
856 | 849 & i2_1d(ib(1):ie(1)), & |
---|
857 | 850 & start=io_sf(:),count=io_cf(:)) |
---|
858 | 851 ENDIF |
---|
859 | 852 ib(1:1) = ia_sm(1:1); ie(1:1) = ib(1:1)+io_cm(1:1)-1; |
---|
860 | 853 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
861 | 854 & i2_1d(ib(1):ie(1)), & |
---|
862 | 855 & start=io_sm(:),count=io_cm(:)) |
---|
863 | 856 IF (l_o_l) THEN |
---|
864 | 857 ib(1:1) = ia_sl(1:1); ie(1:1) = ib(1:1)+io_cl(1:1)-1; |
---|
865 | 858 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
866 | 859 & i2_1d(ib(1):ie(1)), & |
---|
867 | 860 & start=io_sl(:),count=io_cl(:)) |
---|
868 | 861 ENDIF |
---|
869 | 862 DEALLOCATE(i2_1d) |
---|
870 | 863 CASE (2) !--- 2d array |
---|
871 | 864 ALLOCATE(i2_2d(io_n(1),io_n(2))) |
---|
872 | 865 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i2_2d, & |
---|
873 | 866 & start=io_i(:),count=io_n(:)) |
---|
874 | 867 IF (l_o_f) THEN |
---|
875 | 868 ib(1:2) = ia_sf(1:2); ie(1:2) = ib(1:2)+io_cf(1:2)-1; |
---|
876 | 869 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
877 | 870 & i2_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
878 | 871 & start=io_sf(:),count=io_cf(:)) |
---|
879 | 872 ENDIF |
---|
880 | 873 ib(1:2) = ia_sm(1:2); ie(1:2) = ib(1:2)+io_cm(1:2)-1; |
---|
881 | 874 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
882 | 875 & i2_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
883 | 876 & start=io_sm(:),count=io_cm(:)) |
---|
884 | 877 IF (l_o_l) THEN |
---|
885 | 878 ib(1:2) = ia_sl(1:2); ie(1:2) = ib(1:2)+io_cl(1:2)-1; |
---|
886 | 879 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
887 | 880 & i2_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
888 | 881 & start=io_sl(:),count=io_cl(:)) |
---|
889 | 882 ENDIF |
---|
890 | 883 DEALLOCATE(i2_2d) |
---|
891 | 884 CASE (3) !--- 3d array |
---|
892 | 885 ALLOCATE(i2_3d(io_n(1),io_n(2),io_n(3))) |
---|
893 | 886 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i2_3d, & |
---|
894 | 887 & start=io_i(:),count=io_n(:)) |
---|
895 | 888 IF (l_o_f) THEN |
---|
896 | 889 ib(1:3) = ia_sf(1:3); ie(1:3) = ib(1:3)+io_cf(1:3)-1; |
---|
897 | 890 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
898 | 891 & i2_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
899 | 892 & start=io_sf(:),count=io_cf(:)) |
---|
900 | 893 ENDIF |
---|
901 | 894 ib(1:3) = ia_sm(1:3); ie(1:3) = ib(1:3)+io_cm(1:3)-1; |
---|
902 | 895 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
903 | 896 & i2_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
904 | 897 & start=io_sm(:),count=io_cm(:)) |
---|
905 | 898 IF (l_o_l) THEN |
---|
906 | 899 ib(1:3) = ia_sl(1:3); ie(1:3) = ib(1:3)+io_cl(1:3)-1; |
---|
907 | 900 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
908 | 901 & i2_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
909 | 902 & start=io_sl(:),count=io_cl(:)) |
---|
910 | 903 ENDIF |
---|
911 | 904 DEALLOCATE(i2_3d) |
---|
912 | 905 CASE (4) !--- 4d array |
---|
913 | 906 ALLOCATE(i2_4d(io_n(1),io_n(2),io_n(3),io_n(4))) |
---|
914 | 907 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i2_4d, & |
---|
915 | 908 & start=io_i(:),count=io_n(:)) |
---|
916 | 909 IF (l_o_f) THEN |
---|
917 | 910 ib(1:4) = ia_sf(1:4); ie(1:4) = ib(1:4)+io_cf(1:4)-1; |
---|
918 | 911 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
919 | 912 & i2_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
920 | 913 & start=io_sf(:),count=io_cf(:)) |
---|
921 | 914 ENDIF |
---|
922 | 915 ib(1:4) = ia_sm(1:4); ie(1:4) = ib(1:4)+io_cm(1:4)-1; |
---|
923 | 916 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
924 | 917 & i2_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
925 | 918 & start=io_sm(:),count=io_cm(:)) |
---|
926 | 919 IF (l_o_l) THEN |
---|
927 | 920 ib(1:4) = ia_sl(1:4); ie(1:4) = ib(1:4)+io_cl(1:4)-1; |
---|
928 | 921 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
929 | 922 & i2_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
930 | 923 & start=io_sl(:),count=io_cl(:)) |
---|
931 | 924 ENDIF |
---|
932 | 925 DEALLOCATE(i2_4d) |
---|
933 | 926 CASE (5) !--- 5d array |
---|
934 | 927 ALLOCATE(i2_5d(io_n(1),io_n(2),io_n(3),io_n(4),io_n(5))) |
---|
935 | 928 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i2_5d, & |
---|
936 | 929 & start=io_i(:),count=io_n(:)) |
---|
937 | 930 IF (l_o_f) THEN |
---|
938 | 931 ib(1:5) = ia_sf(1:5); ie(1:5) = ib(1:5)+io_cf(1:5)-1; |
---|
939 | 932 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
940 | 933 & i2_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
941 | 934 & ib(4):ie(4),ib(5):ie(5)), & |
---|
942 | 935 & start=io_sf(:),count=io_cf(:)) |
---|
943 | 936 ENDIF |
---|
944 | 937 ib(1:5) = ia_sm(1:5); ie(1:5) = ib(1:5)+io_cm(1:5)-1; |
---|
945 | 938 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
946 | 939 & i2_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
947 | 940 & ib(4):ie(4),ib(5):ie(5)), & |
---|
948 | 941 & start=io_sm(:),count=io_cm(:)) |
---|
949 | 942 IF (l_o_l) THEN |
---|
950 | 943 ib(1:5) = ia_sl(1:5); ie(1:5) = ib(1:5)+io_cl(1:5)-1; |
---|
951 | 944 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
952 | 945 & i2_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
953 | 946 & ib(4):ie(4),ib(5):ie(5)), & |
---|
954 | 947 & start=io_sl(:),count=io_cl(:)) |
---|
955 | 948 ENDIF |
---|
956 | 949 DEALLOCATE(i2_5d) |
---|
957 | 950 END SELECT |
---|
958 | 951 CASE (flio_i4) !--- INTEGER 4 |
---|
959 | 952 SELECT CASE (v_d_nb) |
---|
960 | 953 CASE (0) !--- Scalar |
---|
961 | 954 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i4_0d) |
---|
962 | 955 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)),i4_0d) |
---|
963 | 956 CASE (1) !--- 1d array |
---|
964 | 957 ALLOCATE(i4_1d(io_n(1))) |
---|
965 | 958 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i4_1d, & |
---|
966 | 959 & start=io_i(:),count=io_n(:)) |
---|
967 | 960 IF (l_o_f) THEN |
---|
968 | 961 ib(1:1) = ia_sf(1:1); ie(1:1) = ib(1:1)+io_cf(1:1)-1; |
---|
969 | 962 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
970 | 963 & i4_1d(ib(1):ie(1)), & |
---|
971 | 964 & start=io_sf(:),count=io_cf(:)) |
---|
972 | 965 ENDIF |
---|
973 | 966 ib(1:1) = ia_sm(1:1); ie(1:1) = ib(1:1)+io_cm(1:1)-1; |
---|
974 | 967 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
975 | 968 & i4_1d(ib(1):ie(1)), & |
---|
976 | 969 & start=io_sm(:),count=io_cm(:)) |
---|
977 | 970 IF (l_o_l) THEN |
---|
978 | 971 ib(1:1) = ia_sl(1:1); ie(1:1) = ib(1:1)+io_cl(1:1)-1; |
---|
979 | 972 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
980 | 973 & i4_1d(ib(1):ie(1)), & |
---|
981 | 974 & start=io_sl(:),count=io_cl(:)) |
---|
982 | 975 ENDIF |
---|
983 | 976 DEALLOCATE(i4_1d) |
---|
984 | 977 CASE (2) !--- 2d array |
---|
985 | 978 ALLOCATE(i4_2d(io_n(1),io_n(2))) |
---|
986 | 979 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i4_2d, & |
---|
987 | 980 & start=io_i(:),count=io_n(:)) |
---|
988 | 981 IF (l_o_f) THEN |
---|
989 | 982 ib(1:2) = ia_sf(1:2); ie(1:2) = ib(1:2)+io_cf(1:2)-1; |
---|
990 | 983 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
991 | 984 & i4_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
992 | 985 & start=io_sf(:),count=io_cf(:)) |
---|
993 | 986 ENDIF |
---|
994 | 987 ib(1:2) = ia_sm(1:2); ie(1:2) = ib(1:2)+io_cm(1:2)-1; |
---|
995 | 988 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
996 | 989 & i4_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
997 | 990 & start=io_sm(:),count=io_cm(:)) |
---|
998 | 991 IF (l_o_l) THEN |
---|
999 | 992 ib(1:2) = ia_sl(1:2); ie(1:2) = ib(1:2)+io_cl(1:2)-1; |
---|
1000 | 993 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1001 | 994 & i4_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
1002 | 995 & start=io_sl(:),count=io_cl(:)) |
---|
1003 | 996 ENDIF |
---|
1004 | 997 DEALLOCATE(i4_2d) |
---|
1005 | 998 CASE (3) !--- 3d array |
---|
1006 | 999 ALLOCATE(i4_3d(io_n(1),io_n(2),io_n(3))) |
---|
1007 | 1000 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i4_3d, & |
---|
1008 | 1001 & start=io_i(:),count=io_n(:)) |
---|
1009 | 1002 IF (l_o_f) THEN |
---|
1010 | 1003 ib(1:3) = ia_sf(1:3); ie(1:3) = ib(1:3)+io_cf(1:3)-1; |
---|
1011 | 1004 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1012 | 1005 & i4_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1013 | 1006 & start=io_sf(:),count=io_cf(:)) |
---|
1014 | 1007 ENDIF |
---|
1015 | 1008 ib(1:3) = ia_sm(1:3); ie(1:3) = ib(1:3)+io_cm(1:3)-1; |
---|
1016 | 1009 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1017 | 1010 & i4_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1018 | 1011 & start=io_sm(:),count=io_cm(:)) |
---|
1019 | 1012 IF (l_o_l) THEN |
---|
1020 | 1013 ib(1:3) = ia_sl(1:3); ie(1:3) = ib(1:3)+io_cl(1:3)-1; |
---|
1021 | 1014 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1022 | 1015 & i4_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1023 | 1016 & start=io_sl(:),count=io_cl(:)) |
---|
1024 | 1017 ENDIF |
---|
1025 | 1018 DEALLOCATE(i4_3d) |
---|
1026 | 1019 CASE (4) !--- 4d array |
---|
1027 | 1020 ALLOCATE(i4_4d(io_n(1),io_n(2),io_n(3),io_n(4))) |
---|
1028 | 1021 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i4_4d, & |
---|
1029 | 1022 & start=io_i(:),count=io_n(:)) |
---|
1030 | 1023 IF (l_o_f) THEN |
---|
1031 | 1024 ib(1:4) = ia_sf(1:4); ie(1:4) = ib(1:4)+io_cf(1:4)-1; |
---|
1032 | 1025 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1033 | 1026 & i4_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1034 | 1027 & start=io_sf(:),count=io_cf(:)) |
---|
1035 | 1028 ENDIF |
---|
1036 | 1029 ib(1:4) = ia_sm(1:4); ie(1:4) = ib(1:4)+io_cm(1:4)-1; |
---|
1037 | 1030 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1038 | 1031 & i4_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1039 | 1032 & start=io_sm(:),count=io_cm(:)) |
---|
1040 | 1033 IF (l_o_l) THEN |
---|
1041 | 1034 ib(1:4) = ia_sl(1:4); ie(1:4) = ib(1:4)+io_cl(1:4)-1; |
---|
1042 | 1035 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1043 | 1036 & i4_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1044 | 1037 & start=io_sl(:),count=io_cl(:)) |
---|
1045 | 1038 ENDIF |
---|
1046 | 1039 DEALLOCATE(i4_4d) |
---|
1047 | 1040 CASE (5) !--- 5d array |
---|
1048 | 1041 ALLOCATE(i4_5d(io_n(1),io_n(2),io_n(3),io_n(4),io_n(5))) |
---|
1049 | 1042 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),i4_5d, & |
---|
1050 | 1043 & start=io_i(:),count=io_n(:)) |
---|
1051 | 1044 IF (l_o_f) THEN |
---|
1052 | 1045 ib(1:5) = ia_sf(1:5); ie(1:5) = ib(1:5)+io_cf(1:5)-1; |
---|
1053 | 1046 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1054 | 1047 & i4_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1055 | 1048 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1056 | 1049 & start=io_sf(:),count=io_cf(:)) |
---|
1057 | 1050 ENDIF |
---|
1058 | 1051 ib(1:5) = ia_sm(1:5); ie(1:5) = ib(1:5)+io_cm(1:5)-1; |
---|
1059 | 1052 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1060 | 1053 & i4_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1061 | 1054 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1062 | 1055 & start=io_sm(:),count=io_cm(:)) |
---|
1063 | 1056 IF (l_o_l) THEN |
---|
1064 | 1057 ib(1:5) = ia_sl(1:5); ie(1:5) = ib(1:5)+io_cl(1:5)-1; |
---|
1065 | 1058 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1066 | 1059 & i4_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1067 | 1060 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1068 | 1061 & start=io_sl(:),count=io_cl(:)) |
---|
1069 | 1062 ENDIF |
---|
1070 | 1063 DEALLOCATE(i4_5d) |
---|
1071 | 1064 END SELECT |
---|
1072 | 1065 CASE (flio_r4) !--- REAL 4 |
---|
1073 | 1066 SELECT CASE (v_d_nb) |
---|
1074 | 1067 CASE (0) !--- Scalar |
---|
1075 | 1068 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r4_0d) |
---|
1076 | 1069 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)),r4_0d) |
---|
1077 | 1070 CASE (1) !--- 1d array |
---|
1078 | 1071 ALLOCATE(r4_1d(io_n(1))) |
---|
1079 | 1072 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r4_1d, & |
---|
1080 | 1073 & start=io_i(:),count=io_n(:)) |
---|
1081 | 1074 IF (l_o_f) THEN |
---|
1082 | 1075 ib(1:1) = ia_sf(1:1); ie(1:1) = ib(1:1)+io_cf(1:1)-1; |
---|
1083 | 1076 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1084 | 1077 & r4_1d(ib(1):ie(1)), & |
---|
1085 | 1078 & start=io_sf(:),count=io_cf(:)) |
---|
1086 | 1079 ENDIF |
---|
1087 | 1080 ib(1:1) = ia_sm(1:1); ie(1:1) = ib(1:1)+io_cm(1:1)-1; |
---|
1088 | 1081 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1089 | 1082 & r4_1d(ib(1):ie(1)), & |
---|
1090 | 1083 & start=io_sm(:),count=io_cm(:)) |
---|
1091 | 1084 IF (l_o_l) THEN |
---|
1092 | 1085 ib(1:1) = ia_sl(1:1); ie(1:1) = ib(1:1)+io_cl(1:1)-1; |
---|
1093 | 1086 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1094 | 1087 & r4_1d(ib(1):ie(1)), & |
---|
1095 | 1088 & start=io_sl(:),count=io_cl(:)) |
---|
1096 | 1089 ENDIF |
---|
1097 | 1090 DEALLOCATE(r4_1d) |
---|
1098 | 1091 CASE (2) !--- 2d array |
---|
1099 | 1092 ALLOCATE(r4_2d(io_n(1),io_n(2))) |
---|
1100 | 1093 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r4_2d, & |
---|
1101 | 1094 & start=io_i(:),count=io_n(:)) |
---|
1102 | 1095 IF (l_o_f) THEN |
---|
1103 | 1096 ib(1:2) = ia_sf(1:2); ie(1:2) = ib(1:2)+io_cf(1:2)-1; |
---|
1104 | 1097 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1105 | 1098 & r4_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
1106 | 1099 & start=io_sf(:),count=io_cf(:)) |
---|
1107 | 1100 ENDIF |
---|
1108 | 1101 ib(1:2) = ia_sm(1:2); ie(1:2) = ib(1:2)+io_cm(1:2)-1; |
---|
1109 | 1102 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1110 | 1103 & r4_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
1111 | 1104 & start=io_sm(:),count=io_cm(:)) |
---|
1112 | 1105 IF (l_o_l) THEN |
---|
1113 | 1106 ib(1:2) = ia_sl(1:2); ie(1:2) = ib(1:2)+io_cl(1:2)-1; |
---|
1114 | 1107 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1115 | 1108 & r4_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
1116 | 1109 & start=io_sl(:),count=io_cl(:)) |
---|
1117 | 1110 ENDIF |
---|
1118 | 1111 DEALLOCATE(r4_2d) |
---|
1119 | 1112 CASE (3) !--- 3d array |
---|
1120 | 1113 ALLOCATE(r4_3d(io_n(1),io_n(2),io_n(3))) |
---|
1121 | 1114 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r4_3d, & |
---|
1122 | 1115 & start=io_i(:),count=io_n(:)) |
---|
1123 | 1116 IF (l_o_f) THEN |
---|
1124 | 1117 ib(1:3) = ia_sf(1:3); ie(1:3) = ib(1:3)+io_cf(1:3)-1; |
---|
1125 | 1118 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1126 | 1119 & r4_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1127 | 1120 & start=io_sf(:),count=io_cf(:)) |
---|
1128 | 1121 ENDIF |
---|
1129 | 1122 ib(1:3) = ia_sm(1:3); ie(1:3) = ib(1:3)+io_cm(1:3)-1; |
---|
1130 | 1123 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1131 | 1124 & r4_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1132 | 1125 & start=io_sm(:),count=io_cm(:)) |
---|
1133 | 1126 IF (l_o_l) THEN |
---|
1134 | 1127 ib(1:3) = ia_sl(1:3); ie(1:3) = ib(1:3)+io_cl(1:3)-1; |
---|
1135 | 1128 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1136 | 1129 & r4_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1137 | 1130 & start=io_sl(:),count=io_cl(:)) |
---|
1138 | 1131 ENDIF |
---|
1139 | 1132 DEALLOCATE(r4_3d) |
---|
1140 | 1133 CASE (4) !--- 4d array |
---|
1141 | 1134 ALLOCATE(r4_4d(io_n(1),io_n(2),io_n(3),io_n(4))) |
---|
1142 | 1135 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r4_4d, & |
---|
1143 | 1136 & start=io_i(:),count=io_n(:)) |
---|
1144 | 1137 IF (l_o_f) THEN |
---|
1145 | 1138 ib(1:4) = ia_sf(1:4); ie(1:4) = ib(1:4)+io_cf(1:4)-1; |
---|
1146 | 1139 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1147 | 1140 & r4_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1148 | 1141 & start=io_sf(:),count=io_cf(:)) |
---|
1149 | 1142 ENDIF |
---|
1150 | 1143 ib(1:4) = ia_sm(1:4); ie(1:4) = ib(1:4)+io_cm(1:4)-1; |
---|
1151 | 1144 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1152 | 1145 & r4_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1153 | 1146 & start=io_sm(:),count=io_cm(:)) |
---|
1154 | 1147 IF (l_o_l) THEN |
---|
1155 | 1148 ib(1:4) = ia_sl(1:4); ie(1:4) = ib(1:4)+io_cl(1:4)-1; |
---|
1156 | 1149 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1157 | 1150 & r4_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1158 | 1151 & start=io_sl(:),count=io_cl(:)) |
---|
1159 | 1152 ENDIF |
---|
1160 | 1153 DEALLOCATE(r4_4d) |
---|
1161 | 1154 CASE (5) !--- 5d array |
---|
1162 | 1155 ALLOCATE(r4_5d(io_n(1),io_n(2),io_n(3),io_n(4),io_n(5))) |
---|
1163 | 1156 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r4_5d, & |
---|
1164 | 1157 & start=io_i(:),count=io_n(:)) |
---|
1165 | 1158 IF (l_o_f) THEN |
---|
1166 | 1159 ib(1:5) = ia_sf(1:5); ie(1:5) = ib(1:5)+io_cf(1:5)-1; |
---|
1167 | 1160 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1168 | 1161 & r4_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1169 | 1162 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1170 | 1163 & start=io_sf(:),count=io_cf(:)) |
---|
1171 | 1164 ENDIF |
---|
1172 | 1165 ib(1:5) = ia_sm(1:5); ie(1:5) = ib(1:5)+io_cm(1:5)-1; |
---|
1173 | 1166 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1174 | 1167 & r4_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1175 | 1168 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1176 | 1169 & start=io_sm(:),count=io_cm(:)) |
---|
1177 | 1170 IF (l_o_l) THEN |
---|
1178 | 1171 ib(1:5) = ia_sl(1:5); ie(1:5) = ib(1:5)+io_cl(1:5)-1; |
---|
1179 | 1172 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1180 | 1173 & r4_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1181 | 1174 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1182 | 1175 & start=io_sl(:),count=io_cl(:)) |
---|
1183 | 1176 ENDIF |
---|
1184 | 1177 DEALLOCATE(r4_5d) |
---|
1185 | 1178 END SELECT |
---|
1186 | 1179 CASE (flio_r8) !--- REAL 8 |
---|
1187 | 1180 SELECT CASE (v_d_nb) |
---|
1188 | 1181 CASE (0) !--- Scalar |
---|
1189 | 1182 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r8_0d) |
---|
1190 | 1183 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)),r8_0d) |
---|
1191 | 1184 CASE (1) !--- 1d array |
---|
1192 | 1185 ALLOCATE(r8_1d(io_n(1))) |
---|
1193 | 1186 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r8_1d, & |
---|
1194 | 1187 & start=io_i(:),count=io_n(:)) |
---|
1195 | 1188 IF (l_o_f) THEN |
---|
1196 | 1189 ib(1:1) = ia_sf(1:1); ie(1:1) = ib(1:1)+io_cf(1:1)-1; |
---|
1197 | 1190 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1198 | 1191 & r8_1d(ib(1):ie(1)), & |
---|
1199 | 1192 & start=io_sf(:),count=io_cf(:)) |
---|
1200 | 1193 ENDIF |
---|
1201 | 1194 ib(1:1) = ia_sm(1:1); ie(1:1) = ib(1:1)+io_cm(1:1)-1; |
---|
1202 | 1195 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1203 | 1196 & r8_1d(ib(1):ie(1)), & |
---|
1204 | 1197 & start=io_sm(:),count=io_cm(:)) |
---|
1205 | 1198 IF (l_o_l) THEN |
---|
1206 | 1199 ib(1:1) = ia_sl(1:1); ie(1:1) = ib(1:1)+io_cl(1:1)-1; |
---|
1207 | 1200 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1208 | 1201 & r8_1d(ib(1):ie(1)), & |
---|
1209 | 1202 & start=io_sl(:),count=io_cl(:)) |
---|
1210 | 1203 ENDIF |
---|
1211 | 1204 DEALLOCATE(r8_1d) |
---|
1212 | 1205 CASE (2) !--- 2d array |
---|
1213 | 1206 ALLOCATE(r8_2d(io_n(1),io_n(2))) |
---|
1214 | 1207 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r8_2d, & |
---|
1215 | 1208 & start=io_i(:),count=io_n(:)) |
---|
1216 | 1209 IF (l_o_f) THEN |
---|
1217 | 1210 ib(1:2) = ia_sf(1:2); ie(1:2) = ib(1:2)+io_cf(1:2)-1; |
---|
1218 | 1211 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1219 | 1212 & r8_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
1220 | 1213 & start=io_sf(:),count=io_cf(:)) |
---|
1221 | 1214 ENDIF |
---|
1222 | 1215 ib(1:2) = ia_sm(1:2); ie(1:2) = ib(1:2)+io_cm(1:2)-1; |
---|
1223 | 1216 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1224 | 1217 & r8_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
1225 | 1218 & start=io_sm(:),count=io_cm(:)) |
---|
1226 | 1219 IF (l_o_l) THEN |
---|
1227 | 1220 ib(1:2) = ia_sl(1:2); ie(1:2) = ib(1:2)+io_cl(1:2)-1; |
---|
1228 | 1221 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1229 | 1222 & r8_2d(ib(1):ie(1),ib(2):ie(2)), & |
---|
1230 | 1223 & start=io_sl(:),count=io_cl(:)) |
---|
1231 | 1224 ENDIF |
---|
1232 | 1225 DEALLOCATE(r8_2d) |
---|
1233 | 1226 CASE (3) !--- 3d array |
---|
1234 | 1227 ALLOCATE(r8_3d(io_n(1),io_n(2),io_n(3))) |
---|
1235 | 1228 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r8_3d, & |
---|
1236 | 1229 & start=io_i(:),count=io_n(:)) |
---|
1237 | 1230 IF (l_o_f) THEN |
---|
1238 | 1231 ib(1:3) = ia_sf(1:3); ie(1:3) = ib(1:3)+io_cf(1:3)-1; |
---|
1239 | 1232 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1240 | 1233 & r8_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1241 | 1234 & start=io_sf(:),count=io_cf(:)) |
---|
1242 | 1235 ENDIF |
---|
1243 | 1236 ib(1:3) = ia_sm(1:3); ie(1:3) = ib(1:3)+io_cm(1:3)-1; |
---|
1244 | 1237 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1245 | 1238 & r8_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1246 | 1239 & start=io_sm(:),count=io_cm(:)) |
---|
1247 | 1240 IF (l_o_l) THEN |
---|
1248 | 1241 ib(1:3) = ia_sl(1:3); ie(1:3) = ib(1:3)+io_cl(1:3)-1; |
---|
1249 | 1242 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1250 | 1243 & r8_3d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3)), & |
---|
1251 | 1244 & start=io_sl(:),count=io_cl(:)) |
---|
1252 | 1245 ENDIF |
---|
1253 | 1246 DEALLOCATE(r8_3d) |
---|
1254 | 1247 CASE (4) !--- 4d array |
---|
1255 | 1248 ALLOCATE(r8_4d(io_n(1),io_n(2),io_n(3),io_n(4))) |
---|
1256 | 1249 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r8_4d, & |
---|
1257 | 1250 & start=io_i(:),count=io_n(:)) |
---|
1258 | 1251 IF (l_o_f) THEN |
---|
1259 | 1252 ib(1:4) = ia_sf(1:4); ie(1:4) = ib(1:4)+io_cf(1:4)-1; |
---|
1260 | 1253 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1261 | 1254 & r8_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1262 | 1255 & start=io_sf(:),count=io_cf(:)) |
---|
1263 | 1256 ENDIF |
---|
1264 | 1257 ib(1:4) = ia_sm(1:4); ie(1:4) = ib(1:4)+io_cm(1:4)-1; |
---|
1265 | 1258 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1266 | 1259 & r8_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1267 | 1260 & start=io_sm(:),count=io_cm(:)) |
---|
1268 | 1261 IF (l_o_l) THEN |
---|
1269 | 1262 ib(1:4) = ia_sl(1:4); ie(1:4) = ib(1:4)+io_cl(1:4)-1; |
---|
1270 | 1263 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1271 | 1264 & r8_4d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3),ib(4):ie(4)), & |
---|
1272 | 1265 & start=io_sl(:),count=io_cl(:)) |
---|
1273 | 1266 ENDIF |
---|
1274 | 1267 DEALLOCATE(r8_4d) |
---|
1275 | 1268 CASE (5) !--- 5d array |
---|
1276 | 1269 ALLOCATE(r8_5d(io_n(1),io_n(2),io_n(3),io_n(4),io_n(5))) |
---|
1277 | 1270 CALL fliogetv (f_id_i,TRIM(f_v_nm(iv)),r8_5d, & |
---|
1278 | 1271 & start=io_i(:),count=io_n(:)) |
---|
1279 | 1272 IF (l_o_f) THEN |
---|
1280 | 1273 ib(1:5) = ia_sf(1:5); ie(1:5) = ib(1:5)+io_cf(1:5)-1; |
---|
1281 | 1274 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1282 | 1275 & r8_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1283 | 1276 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1284 | 1277 & start=io_sf(:),count=io_cf(:)) |
---|
1285 | 1278 ENDIF |
---|
1286 | 1279 ib(1:5) = ia_sm(1:5); ie(1:5) = ib(1:5)+io_cm(1:5)-1; |
---|
1287 | 1280 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1288 | 1281 & r8_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1289 | 1282 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1290 | 1283 & start=io_sm(:),count=io_cm(:)) |
---|
1291 | 1284 IF (l_o_l) THEN |
---|
1292 | 1285 ib(1:5) = ia_sl(1:5); ie(1:5) = ib(1:5)+io_cl(1:5)-1; |
---|
1293 | 1286 CALL flioputv (f_id_o,TRIM(f_v_nm(iv)), & |
---|
1294 | 1287 & r8_5d(ib(1):ie(1),ib(2):ie(2),ib(3):ie(3), & |
---|
1295 | 1288 & ib(4):ie(4),ib(5):ie(5)), & |
---|
1296 | 1289 & start=io_sl(:),count=io_cl(:)) |
---|
1297 | 1290 ENDIF |
---|
1298 | 1291 DEALLOCATE(r8_5d) |
---|
1299 | 1292 END SELECT |
---|
1300 | 1293 END SELECT |
---|
1301 | 1294 !---- |
---|
1302 | 1295 IF (l_cgd) THEN |
---|
1303 | 1296 !------ Close each file containing a small piece of data |
---|
1304 | 1297 !xxxxxxx |
---|
1305 | 1298 !xxxxxxx CALL flioclo(f_id_i) |
---|
1306 | 1299 !xxxxxxx |
---|
1307 | 1300 ENDIF |
---|
1308 | 1301 ENDDO |
---|
1309 | 1302 !--- |
---|
1310 | 1303 !-- If needed, deallocate io_* arrays |
---|
1311 | 1304 IF (v_d_nb > 0) THEN |
---|
1312 | 1305 DEALLOCATE(io_i,io_n,ia_sm,io_sm,io_cm) |
---|
1313 | 1306 IF (TRIM(c_d_n) == "apple") THEN |
---|
1314 | 1307 DEALLOCATE(ia_sf,io_sf,io_cf) |
---|
1315 | 1308 DEALLOCATE(ia_sl,io_sl,io_cl) |
---|
1316 | 1309 ENDIF |
---|
1317 | 1310 ENDIF |
---|
1318 | 1311 ENDDO |
---|
1319 | 1312 !- |
---|
1320 | 1313 !------------------- |
---|
1321 | 1314 ! Ending the work |
---|
1322 | 1315 !------------------- |
---|
1323 | 1316 !- |
---|
1324 | 1317 ! Close files |
---|
1325 | 1318 !xxxxxxx |
---|
1326 | 1319 !xxxxxxx CALL flioclo (f_id_i1) |
---|
1327 | 1320 !xxxxxxx CALL flioclo (f_id_o) |
---|
1328 | 1321 CALL flioclo () |
---|
1329 | 1322 !xxxxxxx |
---|
1330 | 1323 !- |
---|
1331 | 1324 ! Deallocate |
---|
1332 | 1325 DEALLOCATE(f_nm) |
---|
1333 | 1326 DEALLOCATE(f_a_id) |
---|
1334 | 1327 DEALLOCATE(f_d_nm,f_v_nm,f_a_nm) |
---|
1335 | 1328 DEALLOCATE(f_d_i,f_d_l) |
---|
1336 | 1329 DEALLOCATE(d_d_i,d_s_g) |
---|
1337 | 1330 DEALLOCATE(d_s_l,d_p_f,d_p_l,d_h_s,d_h_e) |
---|
1338 | 1331 !- |
---|
1339 | 1332 IF (TRIM(c_w_mode) == 'verbose') THEN |
---|
1340 | 1333 !-- elapsed and cpu time computation |
---|
1341 | 1334 CALL cpu_time (t_cpu_end) |
---|
1342 | 1335 CALL system_clock(count=nb_cc_end) |
---|
1343 | 1336 WRITE (UNIT=*,FMT='("")') |
---|
1344 | 1337 WRITE (UNIT=*,fmt='(" elapsed time (s) : ",1PE11.4)') & |
---|
1345 | 1338 & REAL(nb_cc_end-nb_cc_ini)/REAL(nb_cc_sec) |
---|
1346 | 1339 WRITE (UNIT=*,fmt='(" CPU time (s) : ",1PE11.4)') & |
---|
1347 | 1340 & t_cpu_end-t_cpu_ini |
---|
1348 | 1341 ENDIF |
---|
1349 | 1342 !-------------------- |
---|
1350 | 1343 END PROGRAM flio_rbld |
---|
1351 | Linux R2.4.18-nec3.4p1.032 FORTRAN90/SX Rev.315 Thu Feb 9 10:37:47 2006 |
---|
1352 | FILE NAME: i.flio_rbld.f90 |
---|
1353 | PROGRAM NAME: flio_rbld |
---|
1354 | DIAGNOSTIC LIST |
---|
1355 | |
---|
1356 | LINE LEVEL( NO.): DIAGNOSTIC MESSAGE |
---|
1357 | |
---|
1358 | 155 vec ( 3): Unvectorized loop. |
---|
1359 | 164 vec ( 3): Unvectorized loop. |
---|
1360 | 227 vec ( 3): Unvectorized loop. |
---|
1361 | 257 vec ( 4): Vectorized array expression. |
---|
1362 | 263 vec ( 4): Vectorized array expression. |
---|
1363 | 263 vec ( 4): Vectorized array expression. |
---|
1364 | 285 vec ( 4): Vectorized array expression. |
---|
1365 | 286 vec ( 4): Vectorized array expression. |
---|
1366 | 286 vec ( 4): Vectorized array expression. |
---|
1367 | 314 vec ( 4): Vectorized array expression. |
---|
1368 | 337 vec ( 4): Vectorized array expression. |
---|
1369 | 360 vec ( 4): Vectorized array expression. |
---|
1370 | 383 vec ( 4): Vectorized array expression. |
---|
1371 | 406 vec ( 4): Vectorized array expression. |
---|
1372 | 452 vec ( 4): Vectorized array expression. |
---|
1373 | 453 vec ( 4): Vectorized array expression. |
---|
1374 | 455 vec ( 3): Unvectorized loop. |
---|
1375 | 463 vec ( 3): Unvectorized loop. |
---|
1376 | 468 vec ( 3): Unvectorized loop. |
---|
1377 | 474 vec ( 4): Vectorized array expression. |
---|
1378 | 475 vec ( 4): Vectorized array expression. |
---|
1379 | 477 vec ( 3): Unvectorized loop. |
---|
1380 | 479 vec ( 4): Vectorized array expression. |
---|
1381 | 480 vec ( 4): Vectorized array expression. |
---|
1382 | 481 vec ( 4): Vectorized array expression. |
---|
1383 | 482 vec ( 4): Vectorized array expression. |
---|
1384 | 484 vec ( 4): Vectorized array expression. |
---|
1385 | 490 vec ( 4): Vectorized array expression. |
---|
1386 | 492 vec ( 4): Vectorized array expression. |
---|
1387 | 507 vec ( 3): Unvectorized loop. |
---|
1388 | 541 vec ( 3): Unvectorized loop. |
---|
1389 | 568 vec ( 3): Unvectorized loop. |
---|
1390 | 592 vec ( 3): Unvectorized loop. |
---|
1391 | 593 vec ( 4): Vectorized array expression. |
---|
1392 | 593 vec ( 4): Vectorized array expression. |
---|
1393 | 594 vec ( 4): Vectorized array expression. |
---|
1394 | 594 vec ( 4): Vectorized array expression. |
---|
1395 | 605 vec ( 4): Vectorized array expression. |
---|
1396 | 605 vec ( 4): Vectorized array expression. |
---|
1397 | 606 vec ( 4): Vectorized array expression. |
---|
1398 | 606 vec ( 4): Vectorized array expression. |
---|
1399 | 606 vec ( 4): Vectorized array expression. |
---|
1400 | 612 vec ( 4): Vectorized array expression. |
---|
1401 | 612 vec ( 4): Vectorized array expression. |
---|
1402 | 612 vec ( 4): Vectorized array expression. |
---|
1403 | 613 vec ( 4): Vectorized array expression. |
---|
1404 | 613 vec ( 4): Vectorized array expression. |
---|
1405 | 613 vec ( 4): Vectorized array expression. |
---|
1406 | 631 vec ( 3): Unvectorized loop. |
---|
1407 | 639 vec ( 3): Unvectorized loop. |
---|
1408 | 650 vec ( 3): Unvectorized loop. |
---|
1409 | 699 vec ( 4): Vectorized array expression. |
---|
1410 | 700 vec ( 4): Vectorized array expression. |
---|
1411 | 703 vec ( 4): Vectorized array expression. |
---|
1412 | 704 vec ( 4): Vectorized array expression. |
---|
1413 | 705 vec ( 4): Vectorized array expression. |
---|
1414 | 707 vec ( 4): Vectorized array expression. |
---|
1415 | 708 vec ( 4): Vectorized array expression. |
---|
1416 | 709 vec ( 4): Vectorized array expression. |
---|
1417 | 712 vec ( 4): Vectorized array expression. |
---|
1418 | 713 vec ( 4): Vectorized array expression. |
---|
1419 | 714 vec ( 4): Vectorized array expression. |
---|
1420 | 847 vec ( 6): Unvectorized array expression. |
---|
1421 | 847 vec ( 6): Unvectorized array expression. |
---|
1422 | 852 vec ( 6): Unvectorized array expression. |
---|
1423 | 852 vec ( 6): Unvectorized array expression. |
---|
1424 | 857 vec ( 6): Unvectorized array expression. |
---|
1425 | 857 vec ( 6): Unvectorized array expression. |
---|
1426 | 868 vec ( 6): Unvectorized array expression. |
---|
1427 | 868 vec ( 6): Unvectorized array expression. |
---|
1428 | 873 vec ( 6): Unvectorized array expression. |
---|
1429 | 873 vec ( 6): Unvectorized array expression. |
---|
1430 | 878 vec ( 6): Unvectorized array expression. |
---|
1431 | 878 vec ( 6): Unvectorized array expression. |
---|
1432 | 889 vec ( 6): Unvectorized array expression. |
---|
1433 | 889 vec ( 6): Unvectorized array expression. |
---|
1434 | 894 vec ( 6): Unvectorized array expression. |
---|
1435 | 894 vec ( 6): Unvectorized array expression. |
---|
1436 | 899 vec ( 6): Unvectorized array expression. |
---|
1437 | 899 vec ( 6): Unvectorized array expression. |
---|
1438 | 910 vec ( 6): Unvectorized array expression. |
---|
1439 | 910 vec ( 6): Unvectorized array expression. |
---|
1440 | 915 vec ( 6): Unvectorized array expression. |
---|
1441 | 915 vec ( 6): Unvectorized array expression. |
---|
1442 | 920 vec ( 6): Unvectorized array expression. |
---|
1443 | 920 vec ( 6): Unvectorized array expression. |
---|
1444 | 931 vec ( 4): Vectorized array expression. |
---|
1445 | 931 vec ( 4): Vectorized array expression. |
---|
1446 | 937 vec ( 4): Vectorized array expression. |
---|
1447 | 937 vec ( 4): Vectorized array expression. |
---|
1448 | 943 vec ( 4): Vectorized array expression. |
---|
1449 | 943 vec ( 4): Vectorized array expression. |
---|
1450 | 961 vec ( 6): Unvectorized array expression. |
---|
1451 | 961 vec ( 6): Unvectorized array expression. |
---|
1452 | 966 vec ( 6): Unvectorized array expression. |
---|
1453 | 966 vec ( 6): Unvectorized array expression. |
---|
1454 | 971 vec ( 6): Unvectorized array expression. |
---|
1455 | 971 vec ( 6): Unvectorized array expression. |
---|
1456 | 982 vec ( 6): Unvectorized array expression. |
---|
1457 | 982 vec ( 6): Unvectorized array expression. |
---|
1458 | 987 vec ( 6): Unvectorized array expression. |
---|
1459 | 987 vec ( 6): Unvectorized array expression. |
---|
1460 | 992 vec ( 6): Unvectorized array expression. |
---|
1461 | 992 vec ( 6): Unvectorized array expression. |
---|
1462 | 1003 vec ( 6): Unvectorized array expression. |
---|
1463 | 1003 vec ( 6): Unvectorized array expression. |
---|
1464 | 1008 vec ( 6): Unvectorized array expression. |
---|
1465 | 1008 vec ( 6): Unvectorized array expression. |
---|
1466 | 1013 vec ( 6): Unvectorized array expression. |
---|
1467 | 1013 vec ( 6): Unvectorized array expression. |
---|
1468 | 1024 vec ( 6): Unvectorized array expression. |
---|
1469 | 1024 vec ( 6): Unvectorized array expression. |
---|
1470 | 1029 vec ( 6): Unvectorized array expression. |
---|
1471 | 1029 vec ( 6): Unvectorized array expression. |
---|
1472 | 1034 vec ( 6): Unvectorized array expression. |
---|
1473 | 1034 vec ( 6): Unvectorized array expression. |
---|
1474 | 1045 vec ( 4): Vectorized array expression. |
---|
1475 | 1045 vec ( 4): Vectorized array expression. |
---|
1476 | 1051 vec ( 4): Vectorized array expression. |
---|
1477 | 1051 vec ( 4): Vectorized array expression. |
---|
1478 | 1057 vec ( 4): Vectorized array expression. |
---|
1479 | 1057 vec ( 4): Vectorized array expression. |
---|
1480 | 1075 vec ( 6): Unvectorized array expression. |
---|
1481 | 1075 vec ( 6): Unvectorized array expression. |
---|
1482 | 1080 vec ( 6): Unvectorized array expression. |
---|
1483 | 1080 vec ( 6): Unvectorized array expression. |
---|
1484 | 1085 vec ( 6): Unvectorized array expression. |
---|
1485 | 1085 vec ( 6): Unvectorized array expression. |
---|
1486 | 1096 vec ( 6): Unvectorized array expression. |
---|
1487 | 1096 vec ( 6): Unvectorized array expression. |
---|
1488 | 1101 vec ( 6): Unvectorized array expression. |
---|
1489 | 1101 vec ( 6): Unvectorized array expression. |
---|
1490 | 1106 vec ( 6): Unvectorized array expression. |
---|
1491 | 1106 vec ( 6): Unvectorized array expression. |
---|
1492 | 1117 vec ( 6): Unvectorized array expression. |
---|
1493 | 1117 vec ( 6): Unvectorized array expression. |
---|
1494 | 1122 vec ( 6): Unvectorized array expression. |
---|
1495 | 1122 vec ( 6): Unvectorized array expression. |
---|
1496 | 1127 vec ( 6): Unvectorized array expression. |
---|
1497 | 1127 vec ( 6): Unvectorized array expression. |
---|
1498 | 1138 vec ( 6): Unvectorized array expression. |
---|
1499 | 1138 vec ( 6): Unvectorized array expression. |
---|
1500 | 1143 vec ( 6): Unvectorized array expression. |
---|
1501 | 1143 vec ( 6): Unvectorized array expression. |
---|
1502 | 1148 vec ( 6): Unvectorized array expression. |
---|
1503 | 1148 vec ( 6): Unvectorized array expression. |
---|
1504 | 1159 vec ( 4): Vectorized array expression. |
---|
1505 | 1159 vec ( 4): Vectorized array expression. |
---|
1506 | 1165 vec ( 4): Vectorized array expression. |
---|
1507 | 1165 vec ( 4): Vectorized array expression. |
---|
1508 | 1171 vec ( 4): Vectorized array expression. |
---|
1509 | 1171 vec ( 4): Vectorized array expression. |
---|
1510 | 1189 vec ( 6): Unvectorized array expression. |
---|
1511 | 1189 vec ( 6): Unvectorized array expression. |
---|
1512 | 1194 vec ( 6): Unvectorized array expression. |
---|
1513 | 1194 vec ( 6): Unvectorized array expression. |
---|
1514 | 1199 vec ( 6): Unvectorized array expression. |
---|
1515 | 1199 vec ( 6): Unvectorized array expression. |
---|
1516 | 1210 vec ( 6): Unvectorized array expression. |
---|
1517 | 1210 vec ( 6): Unvectorized array expression. |
---|
1518 | 1215 vec ( 6): Unvectorized array expression. |
---|
1519 | 1215 vec ( 6): Unvectorized array expression. |
---|
1520 | 1220 vec ( 6): Unvectorized array expression. |
---|
1521 | 1220 vec ( 6): Unvectorized array expression. |
---|
1522 | 1231 vec ( 6): Unvectorized array expression. |
---|
1523 | 1231 vec ( 6): Unvectorized array expression. |
---|
1524 | 1236 vec ( 6): Unvectorized array expression. |
---|
1525 | 1236 vec ( 6): Unvectorized array expression. |
---|
1526 | 1241 vec ( 6): Unvectorized array expression. |
---|
1527 | 1241 vec ( 6): Unvectorized array expression. |
---|
1528 | 1252 vec ( 6): Unvectorized array expression. |
---|
1529 | 1252 vec ( 6): Unvectorized array expression. |
---|
1530 | 1257 vec ( 6): Unvectorized array expression. |
---|
1531 | 1257 vec ( 6): Unvectorized array expression. |
---|
1532 | 1262 vec ( 6): Unvectorized array expression. |
---|
1533 | 1262 vec ( 6): Unvectorized array expression. |
---|
1534 | 1273 vec ( 4): Vectorized array expression. |
---|
1535 | 1273 vec ( 4): Vectorized array expression. |
---|
1536 | 1279 vec ( 4): Vectorized array expression. |
---|
1537 | 1279 vec ( 4): Vectorized array expression. |
---|
1538 | 1285 vec ( 4): Vectorized array expression. |
---|
1539 | 1285 vec ( 4): Vectorized array expression. |
---|