73 |
#ifdef ALLOW_EXCH2 |
#ifdef ALLOW_EXCH2 |
74 |
#include "W2_EXCH2_SIZE.h" |
#include "W2_EXCH2_SIZE.h" |
75 |
#include "W2_EXCH2_TOPOLOGY.h" |
#include "W2_EXCH2_TOPOLOGY.h" |
76 |
|
#include "W2_EXCH2_PARAMS.h" |
77 |
#endif /* ALLOW_EXCH2 */ |
#endif /* ALLOW_EXCH2 */ |
78 |
#include "MDSIO_SCPU.h" |
#include "EEBUFF_SCPU.h" |
79 |
|
|
80 |
C !INPUT PARAMETERS: |
C !INPUT PARAMETERS: |
81 |
CHARACTER*(*) fName |
CHARACTER*(*) fName |
107 |
LOGICAL fileIsOpen |
LOGICAL fileIsOpen |
108 |
LOGICAL iAmDoingIO |
LOGICAL iAmDoingIO |
109 |
LOGICAL writeMetaF |
LOGICAL writeMetaF |
110 |
LOGICAL keepBlankTileIO |
LOGICAL useExch2ioLayOut |
111 |
LOGICAL zeroBuff |
LOGICAL zeroBuff |
112 |
INTEGER xSize, ySize |
INTEGER xSize, ySize |
113 |
INTEGER irecord |
INTEGER irecord |
114 |
INTEGER iG,jG,bi,bj,i,j,k,nNz |
INTEGER iG,jG,bi,bj,i,j,k,nNz |
115 |
INTEGER irec,dUnit,IL,pIL |
INTEGER irec,dUnit,IL,pIL |
116 |
INTEGER dimList(3,3), nDims, map2gl(2) |
INTEGER dimList(3,3), nDims, map2gl(2) |
|
INTEGER iGjLoc, jGjLoc |
|
117 |
INTEGER length_of_rec |
INTEGER length_of_rec |
118 |
Real*4 r4seg(sNx) |
Real*4 r4seg(sNx) |
119 |
Real*8 r8seg(sNx) |
Real*8 r8seg(sNx) |
120 |
|
Real*4 r4loc(sNx,sNy) |
121 |
|
Real*8 r8loc(sNx,sNy) |
122 |
|
INTEGER tNx, tNy, global_nTx |
123 |
|
INTEGER tBx, tBy, iGjLoc, jGjLoc |
124 |
#ifdef ALLOW_EXCH2 |
#ifdef ALLOW_EXCH2 |
125 |
c INTEGER tGy,tGx,tNy,tNx,tN |
INTEGER tN |
|
INTEGER tGy,tGx, tNx,tN |
|
|
INTEGER global_nTx |
|
126 |
#endif /* ALLOW_EXCH2 */ |
#endif /* ALLOW_EXCH2 */ |
|
INTEGER tNy |
|
127 |
|
|
128 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
129 |
C Set dimensions: |
C Set dimensions: |
130 |
xSize = Nx |
xSize = Nx |
131 |
ySize = Ny |
ySize = Ny |
132 |
keepBlankTileIO = .FALSE. |
useExch2ioLayOut = .FALSE. |
133 |
#if defined(ALLOW_EXCH2) && !defined(MISSING_TILE_IO) |
#ifdef ALLOW_EXCH2 |
134 |
xSize = exch2_global_Nx |
IF ( W2_useE2ioLayOut ) THEN |
135 |
ySize = exch2_global_Ny |
xSize = exch2_global_Nx |
136 |
keepBlankTileIO = .TRUE. |
ySize = exch2_global_Ny |
137 |
#endif |
useExch2ioLayOut = .TRUE. |
138 |
|
ENDIF |
139 |
|
#endif /* ALLOW_EXCH2 */ |
140 |
|
|
141 |
C- default: |
C- default: |
142 |
iGjLoc = 0 |
iGjLoc = 0 |
201 |
C Master thread of process 0, only, opens a global file |
C Master thread of process 0, only, opens a global file |
202 |
IF ( iAmDoingIO ) THEN |
IF ( iAmDoingIO ) THEN |
203 |
WRITE(dataFName,'(2a)') fName(1:IL),'.data' |
WRITE(dataFName,'(2a)') fName(1:IL),'.data' |
204 |
length_of_rec=MDS_RECLEN(filePrec,xSize*ySize,myThid) |
length_of_rec = MDS_RECLEN( filePrec, xSize*ySize, myThid ) |
205 |
IF (irecord .EQ. 1) THEN |
IF (irecord .EQ. 1) THEN |
206 |
OPEN( dUnit, file=dataFName, status=_NEW_STATUS, |
OPEN( dUnit, file=dataFName, status=_NEW_STATUS, |
207 |
& access='direct', recl=length_of_rec ) |
& access='direct', recl=length_of_rec ) |
217 |
C- copy from arr(level=k) to 2-D "local": |
C- copy from arr(level=k) to 2-D "local": |
218 |
IF ( filePrec.EQ.precFloat32 ) THEN |
IF ( filePrec.EQ.precFloat32 ) THEN |
219 |
IF ( arrType.EQ.'RS' ) THEN |
IF ( arrType.EQ.'RS' ) THEN |
220 |
CALL MDS_PASS_R4toRS( sharedLocBuf_r4, |
CALL MDS_PASS_R4toRS( sharedLocBuf_r4, arr, |
221 |
& arr, k, kSize, .FALSE., myThid ) |
I k, kSize, 0,0, .FALSE., myThid ) |
222 |
ELSEIF ( arrType.EQ.'RL' ) THEN |
ELSEIF ( arrType.EQ.'RL' ) THEN |
223 |
CALL MDS_PASS_R4toRL( sharedLocBuf_r4, |
CALL MDS_PASS_R4toRL( sharedLocBuf_r4, arr, |
224 |
& arr, k, kSize, .FALSE., myThid ) |
I k, kSize, 0,0, .FALSE., myThid ) |
225 |
ELSE |
ELSE |
226 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
227 |
& ' MDS_WRITE_FIELD: illegal value for arrType' |
& ' MDS_WRITE_FIELD: illegal value for arrType' |
229 |
STOP 'ABNORMAL END: S/R MDS_WRITE_FIELD' |
STOP 'ABNORMAL END: S/R MDS_WRITE_FIELD' |
230 |
ENDIF |
ENDIF |
231 |
CALL GATHER_2D_R4( |
CALL GATHER_2D_R4( |
232 |
U xy_buffer_r4, |
O xy_buffer_r4, |
233 |
O sharedLocBuf_r4, |
I sharedLocBuf_r4, |
234 |
I xSize, ySize, |
I xSize, ySize, |
235 |
I keepBlankTileIO, zeroBuff, myThid ) |
I useExch2ioLayOut, zeroBuff, myThid ) |
236 |
ELSEIF ( filePrec.EQ.precFloat64 ) THEN |
ELSEIF ( filePrec.EQ.precFloat64 ) THEN |
237 |
IF ( arrType.EQ.'RS' ) THEN |
IF ( arrType.EQ.'RS' ) THEN |
238 |
CALL MDS_PASS_R8toRS( sharedLocBuf_r8, |
CALL MDS_PASS_R8toRS( sharedLocBuf_r8, arr, |
239 |
& arr, k, kSize, .FALSE., myThid ) |
I k, kSize, 0,0, .FALSE., myThid ) |
240 |
ELSEIF ( arrType.EQ.'RL' ) THEN |
ELSEIF ( arrType.EQ.'RL' ) THEN |
241 |
CALL MDS_PASS_R8toRL( sharedLocBuf_r8, |
CALL MDS_PASS_R8toRL( sharedLocBuf_r8, arr, |
242 |
& arr, k, kSize, .FALSE., myThid ) |
I k, kSize, 0,0, .FALSE., myThid ) |
243 |
ELSE |
ELSE |
244 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
245 |
& ' MDS_WRITE_FIELD: illegal value for arrType' |
& ' MDS_WRITE_FIELD: illegal value for arrType' |
247 |
STOP 'ABNORMAL END: S/R MDS_WRITE_FIELD' |
STOP 'ABNORMAL END: S/R MDS_WRITE_FIELD' |
248 |
ENDIF |
ENDIF |
249 |
CALL GATHER_2D_R8( |
CALL GATHER_2D_R8( |
250 |
U xy_buffer_r8, |
O xy_buffer_r8, |
251 |
O sharedLocBuf_r8, |
I sharedLocBuf_r8, |
252 |
I xSize, ySize, |
I xSize, ySize, |
253 |
I keepBlankTileIO, zeroBuff, myThid ) |
I useExch2ioLayOut, zeroBuff, myThid ) |
254 |
ELSE |
ELSE |
255 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
256 |
& ' MDS_WRITE_FIELD: illegal value for filePrec' |
& ' MDS_WRITE_FIELD: illegal value for filePrec' |
259 |
ENDIF |
ENDIF |
260 |
|
|
261 |
IF ( iAmDoingIO ) THEN |
IF ( iAmDoingIO ) THEN |
262 |
irec=k+1-kLo+nNz*(irecord-1) |
irec = 1 + k-kLo + (irecord-1)*nNz |
263 |
IF (filePrec .EQ. precFloat32) THEN |
IF (filePrec .EQ. precFloat32) THEN |
264 |
#ifdef _BYTESWAPIO |
#ifdef _BYTESWAPIO |
265 |
CALL MDS_BYTESWAPR4( xSize*ySize, xy_buffer_r4 ) |
CALL MDS_BYTESWAPR4( xSize*ySize, xy_buffer_r4 ) |
296 |
C If we are writing to a global file then we open it here |
C If we are writing to a global file then we open it here |
297 |
IF (globalFile) THEN |
IF (globalFile) THEN |
298 |
WRITE(dataFName,'(2a)') fName(1:IL),'.data' |
WRITE(dataFName,'(2a)') fName(1:IL),'.data' |
299 |
|
length_of_rec = MDS_RECLEN( filePrec, sNx, myThid ) |
300 |
IF (irecord .EQ. 1) THEN |
IF (irecord .EQ. 1) THEN |
|
length_of_rec=MDS_RECLEN( filePrec, sNx, myThid ) |
|
301 |
OPEN( dUnit, file=dataFName, status=_NEW_STATUS, |
OPEN( dUnit, file=dataFName, status=_NEW_STATUS, |
302 |
& access='direct', recl=length_of_rec ) |
& access='direct', recl=length_of_rec ) |
|
fileIsOpen=.TRUE. |
|
303 |
ELSE |
ELSE |
|
length_of_rec=MDS_RECLEN( filePrec, sNx, myThid ) |
|
304 |
OPEN( dUnit, file=dataFName, status=_OLD_STATUS, |
OPEN( dUnit, file=dataFName, status=_OLD_STATUS, |
305 |
& access='direct', recl=length_of_rec ) |
& access='direct', recl=length_of_rec ) |
|
fileIsOpen=.TRUE. |
|
306 |
ENDIF |
ENDIF |
307 |
|
fileIsOpen=.TRUE. |
308 |
ENDIF |
ENDIF |
309 |
|
|
310 |
C Loop over all tiles |
C Loop over all tiles |
311 |
DO bj=1,nSy |
DO bj=1,nSy |
312 |
DO bi=1,nSx |
DO bi=1,nSx |
|
C If we are writing to a tiled MDS file then we open each one here |
|
|
IF (.NOT. globalFile) THEN |
|
|
iG=bi+(myXGlobalLo-1)/sNx ! Kludge until unstructered tiles |
|
|
jG=bj+(myYGlobalLo-1)/sNy ! Kludge until unstructered tiles |
|
|
WRITE(dataFName,'(2A,I3.3,A,I3.3,A)') |
|
|
& pfName(1:pIL),'.',iG,'.',jG,'.data' |
|
|
IF (irecord .EQ. 1) THEN |
|
|
length_of_rec=MDS_RECLEN( filePrec, sNx, myThid ) |
|
|
OPEN( dUnit, file=dataFName, status=_NEW_STATUS, |
|
|
& access='direct', recl=length_of_rec ) |
|
|
fileIsOpen=.TRUE. |
|
|
ELSE |
|
|
length_of_rec=MDS_RECLEN( filePrec, sNx, myThid ) |
|
|
OPEN( dUnit, file=dataFName, status=_OLD_STATUS, |
|
|
& access='direct', recl=length_of_rec ) |
|
|
fileIsOpen=.TRUE. |
|
|
ENDIF |
|
|
ENDIF |
|
313 |
|
|
314 |
IF (fileIsOpen) THEN |
tNx = sNx |
315 |
tNy = sNy |
tNy = sNy |
316 |
|
global_nTx = xSize/sNx |
317 |
|
tBx = myXGlobalLo-1 + (bi-1)*sNx |
318 |
|
tBy = myYGlobalLo-1 + (bj-1)*sNy |
319 |
#ifdef ALLOW_EXCH2 |
#ifdef ALLOW_EXCH2 |
320 |
tN = W2_myTileList(bi) |
IF ( useExch2ioLayOut ) THEN |
321 |
tGy = exch2_tyGlobalo(tN) |
tN = W2_myTileList(bi) |
322 |
tGx = exch2_txGlobalo(tN) |
c tNx = exch2_tNx(tN) |
323 |
tNy = exch2_tNy(tN) |
c tNy = exch2_tNy(tN) |
324 |
tNx = exch2_tNx(tN) |
c global_nTx = exch2_global_Nx/tNx |
325 |
IF ( exch2_mydNx(tN) .GT. xSize ) THEN |
tBx = exch2_txGlobalo(tN) - 1 |
326 |
C- face x-size larger than glob-size : fold it |
tBy = exch2_tyGlobalo(tN) - 1 |
327 |
iGjLoc = 0 |
IF ( exch2_mydNx(tN) .GT. xSize ) THEN |
328 |
jGjLoc = exch2_mydNx(tN) / xSize |
C- face x-size larger than glob-size : fold it |
329 |
ELSEIF ( exch2_tNy(tN) .GT. ySize ) THEN |
iGjLoc = 0 |
330 |
C- tile y-size larger than glob-size : make a long line |
jGjLoc = exch2_mydNx(tN) / xSize |
331 |
iGjLoc = exch2_mydNx(tN) |
ELSEIF ( exch2_tNy(tN) .GT. ySize ) THEN |
332 |
jGjLoc = 0 |
C- tile y-size larger than glob-size : make a long line |
333 |
ELSE |
iGjLoc = exch2_mydNx(tN) |
334 |
C- default (face fit into global-IO-array) |
jGjLoc = 0 |
335 |
iGjLoc = 0 |
ELSE |
336 |
jGjLoc = 1 |
C- default (face fit into global-IO-array) |
337 |
ENDIF |
iGjLoc = 0 |
338 |
global_nTx = exch2_global_Nx/tNx |
jGjLoc = 1 |
339 |
|
ENDIF |
340 |
|
ENDIF |
341 |
#endif /* ALLOW_EXCH2 */ |
#endif /* ALLOW_EXCH2 */ |
342 |
DO k=1,nNz |
|
343 |
|
IF (globalFile) THEN |
344 |
|
C--- Case of 1 Global file: |
345 |
|
|
346 |
|
DO k=kLo,kHi |
347 |
DO j=1,tNy |
DO j=1,tNy |
348 |
IF (globalFile) THEN |
irec = 1 + ( tBx + (j-1)*iGjLoc )/tNx |
349 |
#ifdef ALLOW_EXCH2 |
& + ( tBy + (j-1)*jGjLoc )*global_nTx |
350 |
irec = 1 + ( tGx-1 + (j-1)*iGjLoc )/tNx |
& +( k-kLo + (irecord-1)*nNz )*global_nTx*ySize |
|
& + ( tGy-1 + (j-1)*jGjLoc )*global_nTx |
|
|
& + ( k-kLo + (irecord-1)*nNz |
|
|
& )*ySize*global_nTx |
|
|
#else /* ALLOW_EXCH2 */ |
|
|
iG = myXGlobalLo-1 + (bi-1)*sNx |
|
|
jG = myYGlobalLo-1 + (bj-1)*sNy |
|
|
irec= 1 + INT(iG/sNx) + nSx*nPx*(jG+j-1) |
|
|
& + nSx*nPx*Ny*(k-kLo) |
|
|
& + nSx*nPx*Ny*nNz*(irecord-1) |
|
|
#endif /* ALLOW_EXCH2 */ |
|
|
ELSE |
|
|
irec=j + sNy*(k-kLo) + sNy*nNz*(irecord-1) |
|
|
ENDIF |
|
351 |
IF (filePrec .EQ. precFloat32) THEN |
IF (filePrec .EQ. precFloat32) THEN |
352 |
IF (arrType .EQ. 'RS') THEN |
IF (arrType .EQ. 'RS') THEN |
353 |
CALL MDS_SEG4toRS( j,bi,bj,k,kSize, r4seg,.FALSE.,arr ) |
CALL MDS_SEG4toRS( j,bi,bj,k,kSize, r4seg,.FALSE.,arr ) |
388 |
ENDDO |
ENDDO |
389 |
C End of k loop |
C End of k loop |
390 |
ENDDO |
ENDDO |
391 |
|
|
392 |
ELSE |
ELSE |
393 |
C fileIsOpen=F |
C--- Case of 1 file per tile (globalFile=F): |
394 |
WRITE(msgBuf,'(A)') |
|
395 |
& ' MDS_WRITE_FIELD: I should never get to this point' |
C If we are writing to a tiled MDS file then we open each one here |
396 |
CALL PRINT_ERROR( msgBuf, myThid ) |
iG=bi+(myXGlobalLo-1)/sNx |
397 |
STOP 'ABNORMAL END: S/R MDS_WRITE_FIELD' |
jG=bj+(myYGlobalLo-1)/sNy |
398 |
ENDIF |
WRITE(dataFName,'(2A,I3.3,A,I3.3,A)') |
399 |
C If we were writing to a tiled MDS file then we close it here |
& pfName(1:pIL),'.',iG,'.',jG,'.data' |
400 |
IF (fileIsOpen .AND. (.NOT. globalFile)) THEN |
length_of_rec = MDS_RECLEN( filePrec, sNx*sNy, myThid ) |
401 |
CLOSE( dUnit ) |
IF (irecord .EQ. 1) THEN |
402 |
fileIsOpen = .FALSE. |
OPEN( dUnit, file=dataFName, status=_NEW_STATUS, |
403 |
|
& access='direct', recl=length_of_rec ) |
404 |
|
ELSE |
405 |
|
OPEN( dUnit, file=dataFName, status=_OLD_STATUS, |
406 |
|
& access='direct', recl=length_of_rec ) |
407 |
|
ENDIF |
408 |
|
fileIsOpen=.TRUE. |
409 |
|
|
410 |
|
DO k=kLo,kHi |
411 |
|
|
412 |
|
irec = 1 + k-kLo + (irecord-1)*nNz |
413 |
|
IF (filePrec .EQ. precFloat32) THEN |
414 |
|
IF ( arrType.EQ.'RS' ) THEN |
415 |
|
CALL MDS_PASS_R4toRS( r4loc, arr, |
416 |
|
I k, kSize, bi,bj,.FALSE., myThid ) |
417 |
|
ELSEIF ( arrType.EQ.'RL' ) THEN |
418 |
|
CALL MDS_PASS_R4toRL( r4loc, arr, |
419 |
|
I k, kSize, bi,bj,.FALSE., myThid ) |
420 |
|
ELSE |
421 |
|
WRITE(msgBuf,'(A)') |
422 |
|
& ' MDS_WRITE_FIELD: illegal value for arrType' |
423 |
|
CALL PRINT_ERROR( msgBuf, myThid ) |
424 |
|
STOP 'ABNORMAL END: S/R MDS_WRITE_FIELD' |
425 |
|
ENDIF |
426 |
|
#ifdef _BYTESWAPIO |
427 |
|
CALL MDS_BYTESWAPR4( sNx*sNy, r4loc ) |
428 |
|
#endif |
429 |
|
WRITE(dUnit,rec=irec) r4loc |
430 |
|
ELSEIF (filePrec .EQ. precFloat64) THEN |
431 |
|
IF ( arrType.EQ.'RS' ) THEN |
432 |
|
CALL MDS_PASS_R8toRS( r8loc, arr, |
433 |
|
I k, kSize, bi,bj,.FALSE., myThid ) |
434 |
|
ELSEIF ( arrType.EQ.'RL' ) THEN |
435 |
|
CALL MDS_PASS_R8toRL( r8loc, arr, |
436 |
|
I k, kSize, bi,bj,.FALSE., myThid ) |
437 |
|
ELSE |
438 |
|
WRITE(msgBuf,'(A)') |
439 |
|
& ' MDS_WRITE_FIELD: illegal value for arrType' |
440 |
|
CALL PRINT_ERROR( msgBuf, myThid ) |
441 |
|
STOP 'ABNORMAL END: S/R MDS_WRITE_FIELD' |
442 |
|
ENDIF |
443 |
|
#ifdef _BYTESWAPIO |
444 |
|
CALL MDS_BYTESWAPR8( sNx*sNy, r8loc ) |
445 |
|
#endif |
446 |
|
WRITE(dUnit,rec=irec) r8loc |
447 |
|
ELSE |
448 |
|
WRITE(msgBuf,'(A)') |
449 |
|
& ' MDS_WRITE_FIELD: illegal value for filePrec' |
450 |
|
CALL PRINT_ERROR( msgBuf, myThid ) |
451 |
|
STOP 'ABNORMAL END: S/R MDS_WRITE_FIELD' |
452 |
|
ENDIF |
453 |
|
|
454 |
|
C End of k loop |
455 |
|
ENDDO |
456 |
|
|
457 |
|
C here We close the tiled MDS file |
458 |
|
IF ( fileIsOpen ) THEN |
459 |
|
CLOSE( dUnit ) |
460 |
|
fileIsOpen = .FALSE. |
461 |
|
ENDIF |
462 |
|
|
463 |
|
C--- End Global File / tile-file cases |
464 |
ENDIF |
ENDIF |
465 |
|
|
466 |
C Create meta-file for each tile if we are tiling |
C Create meta-file for each tile if we are tiling |
467 |
IF ( .NOT.globalFile .AND. writeMetaF ) THEN |
IF ( .NOT.globalFile .AND. writeMetaF ) THEN |
468 |
iG=bi+(myXGlobalLo-1)/sNx |
iG=bi+(myXGlobalLo-1)/sNx |
469 |
jG=bj+(myYGlobalLo-1)/sNy |
jG=bj+(myYGlobalLo-1)/sNy |
470 |
WRITE(metaFname,'(2A,I3.3,A,I3.3,A)') |
WRITE(metaFname,'(2A,I3.3,A,I3.3,A)') |
471 |
& pfName(1:pIL),'.',iG,'.',jG,'.meta' |
& pfName(1:pIL),'.',iG,'.',jG,'.meta' |
|
#if defined(ALLOW_EXCH2) && !defined(MISSING_TILE_IO) |
|
|
tN = W2_myTileList(bi) |
|
472 |
dimList(1,1) = xSize |
dimList(1,1) = xSize |
473 |
dimList(2,1) = exch2_txGlobalo(tN) |
dimList(2,1) = tBx + 1 |
474 |
dimList(3,1) = exch2_txGlobalo(tN)+sNx-1 |
dimList(3,1) = tBx + tNx |
475 |
dimList(1,2) = ySize |
dimList(1,2) = ySize |
476 |
dimList(2,2) = exch2_tyGlobalo(tN) |
dimList(2,2) = tBy + 1 |
477 |
dimList(3,2) = exch2_tyGlobalo(tN)+sNy-1 |
dimList(3,2) = tBy + tNy |
|
#else /* defined(ALLOW_EXCH2) && !defined(MISSING_TILE_IO) */ |
|
|
C- jmc: if MISSING_TILE_IO, keep meta files unchanged |
|
|
C to stay consistent with global file structure |
|
|
dimList(1,1) = Nx |
|
|
dimList(2,1) = myXGlobalLo+(bi-1)*sNx |
|
|
dimList(3,1) = myXGlobalLo+bi*sNx-1 |
|
|
dimList(1,2) = Ny |
|
|
dimList(2,2) = myYGlobalLo+(bj-1)*sNy |
|
|
dimList(3,2) = myYGlobalLo+bj*sNy-1 |
|
|
#endif /* defined(ALLOW_EXCH2) && !defined(MISSING_TILE_IO) */ |
|
478 |
dimList(1,3) = nNz |
dimList(1,3) = nNz |
479 |
dimList(2,3) = 1 |
dimList(2,3) = 1 |
480 |
dimList(3,3) = nNz |
dimList(3,3) = nNz |
481 |
|
c dimList(1,3) = kSize |
482 |
|
c dimList(2,3) = kLo |
483 |
|
c dimList(3,3) = kHi |
484 |
nDims = 3 |
nDims = 3 |
485 |
IF ( nNz.EQ.1 ) nDims = 2 |
IF ( nNz.EQ.1 ) nDims = 2 |
486 |
map2gl(1) = iGjLoc |
map2gl(1) = iGjLoc |
490 |
I filePrec, nDims,dimList,map2gl, 0, ' ', |
I filePrec, nDims,dimList,map2gl, 0, ' ', |
491 |
I 0, UNSET_RL, irecord, myIter, myThid ) |
I 0, UNSET_RL, irecord, myIter, myThid ) |
492 |
ENDIF |
ENDIF |
493 |
|
|
494 |
C End of bi,bj loops |
C End of bi,bj loops |
495 |
ENDDO |
ENDDO |
496 |
ENDDO |
ENDDO |
520 |
dimList(1,3) = nNz |
dimList(1,3) = nNz |
521 |
dimList(2,3) = 1 |
dimList(2,3) = 1 |
522 |
dimList(3,3) = nNz |
dimList(3,3) = nNz |
523 |
|
c dimList(1,3) = kSize |
524 |
|
c dimList(2,3) = kLo |
525 |
|
c dimList(3,3) = kHi |
526 |
nDims = 3 |
nDims = 3 |
527 |
IF ( nNz.EQ.1 ) nDims = 2 |
IF ( nNz.EQ.1 ) nDims = 2 |
528 |
map2gl(1) = 0 |
map2gl(1) = 0 |