/[MITgcm]/MITgcm/eesupp/src/print.F
ViewVC logotype

Diff of /MITgcm/eesupp/src/print.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.32 by zhc, Tue Jul 6 23:12:51 2010 UTC revision 1.33 by jmc, Wed Mar 28 20:30:26 2012 UTC
# Line 99  C--    Write single process format Line 99  C--    Write single process format
99         ENDIF         ENDIF
100        ELSEIF ( pidIO .EQ. myProcId ) THEN        ELSEIF ( pidIO .EQ. myProcId ) THEN
101  C--    Write multi-process format  C--    Write multi-process format
102    C      PRINT can be called by several threads simultaneously.
103    C      The write statement may need to ne marked as a critical section.
104  #ifndef FMTFTN_IO_THREAD_SAFE  #ifndef FMTFTN_IO_THREAD_SAFE
105    # ifdef USE_OMP_THREADING
106    C$OMP CRITICAL
107    # else
108         _BEGIN_CRIT(myThid)         _BEGIN_CRIT(myThid)
109    # endif
110  #endif  #endif
111          WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid         WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid
 #ifndef FMTFTN_IO_THREAD_SAFE  
        _END_CRIT(myThid)  
 #endif  
112         IF ( message .EQ. ' ' ) THEN         IF ( message .EQ. ' ' ) THEN
113  C       PRINT can be called by several threads simultaneously.          WRITE(unit,'(A,A,A,A,A,A)',ERR=999)
 C       The write statement may need to ne marked as a critical section.  
 #ifndef FMTFTN_IO_THREAD_SAFE  
         _BEGIN_CRIT(myThid)  
 #endif  
          WRITE(unit,'(A,A,A,A,A,A)',ERR=999)  
114       &   '(',PROCESS_HEADER,' ',idString,')',' '       &   '(',PROCESS_HEADER,' ',idString,')',' '
 #ifndef FMTFTN_IO_THREAD_SAFE  
         _END_CRIT(myThid)  
 #endif  
115         ELSE         ELSE
116            WRITE(unit,'(A,A,A,A,A,A,A)',ERR=999)
117         &   '(',PROCESS_HEADER,' ',idString,')',' ',message(iStart:iEnd)
118           ENDIF
119           GOTO 1000
120      999  CONTINUE
121           ioErrorCount(myThid) = ioErrorCount(myThid)+1
122     1000  CONTINUE
123  #ifndef FMTFTN_IO_THREAD_SAFE  #ifndef FMTFTN_IO_THREAD_SAFE
124          _BEGIN_CRIT(myThid)  # ifdef USE_OMP_THREADING
125  #endif  C$OMP END CRITICAL
126           WRITE(unit,'(A,A,A,A,A,A,A)',ERR=999)  # else
127       &   '(',PROCESS_HEADER,' ',idString(1:ILNBLNK(idString)),')',' ',         _END_CRIT(myThid)
128       &   message(iStart:iEnd)  # endif
 #ifndef FMTFTN_IO_THREAD_SAFE  
         _END_CRIT(myThid)  
129  #endif  #endif
        ENDIF  
130        ENDIF        ENDIF
131    
132  #ifndef DISABLE_WRITE_TO_UNIT_ZERO  #ifndef DISABLE_WRITE_TO_UNIT_ZERO
133  C--   if error message, also write directly to unit 0 :  C--   if error message, also write directly to unit 0 :
134        IF ( numberOfProcs .EQ. 1 .AND. nThreads .EQ. 1        IF ( numberOfProcs .EQ. 1 .AND. myThid .EQ. 1
135       &     .AND. unit.EQ.errorMessageUnit ) THEN       &     .AND. unit.EQ.errorMessageUnit
136          iEnd   = ILNBLNK( message )       &     .AND. message .NE. ' ' ) THEN
137          IF (iEnd.NE.0) WRITE(0,'(A)') message(1:iEnd)          IF ( nThreads.LE.1 ) THEN
138              WRITE(0,'(A)') message(iStart:iEnd)
139            ELSE
140              WRITE(0,'(A,I4.4,A,A)') '(TID ', myThid, ') ',
141         &                   message(iStart:iEnd)
142            ENDIF
143        ENDIF        ENDIF
144  #endif  #endif
 C  
  1000 CONTINUE  
       RETURN  
   999 CONTINUE  
        ioErrorCount(myThid) = ioErrorCount(myThid)+1  
       GOTO 1000  
145    
146          RETURN
147        END        END
148    
149  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
# Line 230  C--    Write multi-process format Line 229  C--    Write multi-process format
229           WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid           WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid
230    
231           IF ( iEnd.EQ.0 ) THEN           IF ( iEnd.EQ.0 ) THEN
232  c         WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999)            WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999)
           WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)')  
233       &    '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ',       &    '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ',
234       &    ' '       &    ' '
235           ELSE           ELSE
236  c         WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999)            WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999)
           WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)')  
237       &    '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ',       &    '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ',
238       &        message(1:iEnd)       &        message(1:iEnd)
239  c    &    message(iStart:iEnd)  c    &    message(iStart:iEnd)
240           ENDIF           ENDIF
241         ENDIF         ENDIF
242           GOTO 1000
243      999  CONTINUE
244           ioErrorCount(myThid) = ioErrorCount(myThid)+1
245     1000  CONTINUE
246    
247  #ifndef DISABLE_WRITE_TO_UNIT_ZERO  #ifndef DISABLE_WRITE_TO_UNIT_ZERO
248  C--    also write directly to unit 0 :  C--    also write directly to unit 0 :
# Line 264  C$OMP END CRITICAL Line 265  C$OMP END CRITICAL
265  #endif  #endif
266        ENDIF        ENDIF
267    
  1000 CONTINUE  
268        RETURN        RETURN
   
 c 999 CONTINUE  
 c      ioErrorCount(myThid) = ioErrorCount(myThid)+1  
 c     GOTO 1000  
269        END        END
270    
271  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.33

  ViewVC Help
Powered by ViewVC 1.1.22