176 |
endif |
endif |
177 |
if (filePrec .eq. precFloat32) then |
if (filePrec .eq. precFloat32) then |
178 |
read(dUnit,rec=irec) r4seg |
read(dUnit,rec=irec) r4seg |
179 |
|
#ifdef _BYTESWAPIO |
180 |
|
call MDS_BYTESWAPR4( sNx, r4seg ) |
181 |
|
#endif |
182 |
if (arrType .eq. 'RS') then |
if (arrType .eq. 'RS') then |
183 |
call MDS_SEG4toRS( j,bi,bj,k,nNz, r4seg, .TRUE., arr ) |
call MDS_SEG4toRS( j,bi,bj,k,nNz, r4seg, .TRUE., arr ) |
184 |
elseif (arrType .eq. 'RL') then |
elseif (arrType .eq. 'RL') then |
188 |
endif |
endif |
189 |
elseif (filePrec .eq. precFloat64) then |
elseif (filePrec .eq. precFloat64) then |
190 |
read(dUnit,rec=irec) r8seg |
read(dUnit,rec=irec) r8seg |
191 |
|
#ifdef _BYTESWAPIO |
192 |
|
call MDS_BYTESWAPR8( sNx, r8seg ) |
193 |
|
#endif |
194 |
if (arrType .eq. 'RS') then |
if (arrType .eq. 'RS') then |
195 |
call MDS_SEG8toRS( j,bi,bj,k,nNz, r8seg, .TRUE., arr ) |
call MDS_SEG8toRS( j,bi,bj,k,nNz, r8seg, .TRUE., arr ) |
196 |
elseif (arrType .eq. 'RL') then |
elseif (arrType .eq. 'RL') then |
376 |
else |
else |
377 |
stop 'MDSWRITEFIELD: illegal value for arrType' |
stop 'MDSWRITEFIELD: illegal value for arrType' |
378 |
endif |
endif |
379 |
|
#ifdef _BYTESWAPIO |
380 |
|
call MDS_BYTESWAPR4( sNx, r4seg ) |
381 |
|
#endif |
382 |
write(dUnit,rec=irec) r4seg |
write(dUnit,rec=irec) r4seg |
383 |
elseif (filePrec .eq. precFloat64) then |
elseif (filePrec .eq. precFloat64) then |
384 |
if (arrType .eq. 'RS') then |
if (arrType .eq. 'RS') then |
388 |
else |
else |
389 |
stop 'MDSWRITEFIELD: illegal value for arrType' |
stop 'MDSWRITEFIELD: illegal value for arrType' |
390 |
endif |
endif |
391 |
|
#ifdef _BYTESWAPIO |
392 |
|
call MDS_BYTESWAPR8( sNx, r8seg ) |
393 |
|
#endif |
394 |
write(dUnit,rec=irec) r8seg |
write(dUnit,rec=irec) r8seg |
395 |
else |
else |
396 |
stop 'MDSWRITEFIELD: illegal value for filePrec' |
stop 'MDSWRITEFIELD: illegal value for filePrec' |
1251 |
return |
return |
1252 |
end |
end |
1253 |
C======================================================================= |
C======================================================================= |
1254 |
|
|
1255 |
|
#ifdef _BYTESWAPIO |
1256 |
|
C======================================================================= |
1257 |
|
subroutine MDS_BYTESWAPR4( n, arr ) |
1258 |
|
C IN: |
1259 |
|
C n integer - Number of 4-byte words in arr |
1260 |
|
C IN/OUT: |
1261 |
|
C arr real*4 - Array declared as real*4(n) |
1262 |
|
C |
1263 |
|
C Created: 05/05/99 adcroft@mit.edu (This is an unfortunate hack!!) |
1264 |
|
|
1265 |
|
implicit none |
1266 |
|
C Arguments |
1267 |
|
integer n |
1268 |
|
character*(*) arr |
1269 |
|
C Local |
1270 |
|
integer i |
1271 |
|
character*(1) cc |
1272 |
|
C ------------------------------------------------------------------ |
1273 |
|
do i=1,4*n,4 |
1274 |
|
cc=arr(i:i) |
1275 |
|
arr(i:i)=arr(i+3:i+3) |
1276 |
|
arr(i+3:i+3)=cc |
1277 |
|
cc=arr(i+1:i+1) |
1278 |
|
arr(i+1:i+1)=arr(i+2:i+2) |
1279 |
|
arr(i+2:i+2)=cc |
1280 |
|
enddo |
1281 |
|
C ------------------------------------------------------------------ |
1282 |
|
return |
1283 |
|
end |
1284 |
|
C======================================================================= |
1285 |
|
|
1286 |
|
C======================================================================= |
1287 |
|
subroutine MDS_BYTESWAPR8( n, arr ) |
1288 |
|
C IN: |
1289 |
|
C n integer - Number of 8-byte words in arr |
1290 |
|
C IN/OUT: |
1291 |
|
C arr real*8 - Array declared as real*4(n) |
1292 |
|
C |
1293 |
|
C Created: 05/05/99 adcroft@mit.edu (This is an unfortunate hack!!) |
1294 |
|
|
1295 |
|
implicit none |
1296 |
|
C Arguments |
1297 |
|
integer n |
1298 |
|
character*(*) arr |
1299 |
|
C Local |
1300 |
|
integer i |
1301 |
|
character*(1) cc |
1302 |
|
C ------------------------------------------------------------------ |
1303 |
|
do i=1,8*n,8 |
1304 |
|
cc=arr(i:i) |
1305 |
|
arr(i:i)=arr(i+7:i+7) |
1306 |
|
arr(i+7:i+7)=cc |
1307 |
|
cc=arr(i+1:i+1) |
1308 |
|
arr(i+1:i+1)=arr(i+6:i+6) |
1309 |
|
arr(i+6:i+6)=cc |
1310 |
|
cc=arr(i+2:i+2) |
1311 |
|
arr(i+2:i+2)=arr(i+5:i+5) |
1312 |
|
arr(i+5:i+5)=cc |
1313 |
|
cc=arr(i+3:i+3) |
1314 |
|
arr(i+3:i+3)=arr(i+4:i+4) |
1315 |
|
arr(i+4:i+4)=cc |
1316 |
|
enddo |
1317 |
|
C ------------------------------------------------------------------ |
1318 |
|
return |
1319 |
|
end |
1320 |
|
C======================================================================= |
1321 |
|
#endif |