84 |
WRITE(errorMessageUnit,'(A,1X,A)') ERROR_HEADER, |
WRITE(errorMessageUnit,'(A,1X,A)') ERROR_HEADER, |
85 |
& message(iStart:iEnd) |
& message(iStart:iEnd) |
86 |
ENDIF |
ENDIF |
87 |
ELSEIF ( pidIO .EQ. myProcId ) THEN |
ELSE |
|
C-- Write multi-process format |
|
|
#ifndef FMTFTN_IO_THREAD_SAFE |
|
|
_BEGIN_CRIT(myThid) |
|
|
#endif |
|
|
WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid |
|
|
#ifndef FMTFTN_IO_THREAD_SAFE |
|
|
_END_CRIT(myThid) |
|
|
#endif |
|
|
IF ( message .EQ. ' ' ) THEN |
|
88 |
C PRINT_ERROR can be called by several threads simulataneously. |
C PRINT_ERROR can be called by several threads simulataneously. |
89 |
C The write statement may need to be marked as a critical section. |
C The write statement may need to be marked as a critical section. |
90 |
#ifndef FMTFTN_IO_THREAD_SAFE |
#ifndef FMTFTN_IO_THREAD_SAFE |
91 |
_BEGIN_CRIT(myThid) |
# ifdef USE_OMP_THREADING |
92 |
#endif |
C$OMP CRITICAL |
93 |
WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999) |
# else |
94 |
& '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ', |
_BEGIN_CRIT(myThid) |
95 |
& ' ' |
# endif |
|
#ifndef FMTFTN_IO_THREAD_SAFE |
|
|
_END_CRIT(myThid) |
|
96 |
#endif |
#endif |
97 |
ELSE |
IF ( pidIO .EQ. myProcId ) THEN |
98 |
#ifndef FMTFTN_IO_THREAD_SAFE |
C-- Write multi-process format |
99 |
_BEGIN_CRIT(myThid) |
WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid |
100 |
|
|
101 |
|
IF ( iEnd.EQ.0 ) THEN |
102 |
|
c WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999) |
103 |
|
WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)') |
104 |
|
& '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ', |
105 |
|
& ' ' |
106 |
|
ELSE |
107 |
|
c WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999) |
108 |
|
WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)') |
109 |
|
& '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ', |
110 |
|
& message(iStart:iEnd) |
111 |
|
ENDIF |
112 |
|
ENDIF |
113 |
|
|
114 |
|
#ifndef DISABLE_WRITE_TO_UNIT_ZERO |
115 |
|
C-- also write directly to unit 0 : |
116 |
|
IF ( numberOfProcs.EQ.1 .AND. iEnd.NE.0 ) THEN |
117 |
|
IF ( nThreads.LE.1 ) THEN |
118 |
|
WRITE(0,'(A)') message(1:iEnd) |
119 |
|
ELSE |
120 |
|
WRITE(0,'(A,I4.4,A,A)') '(TID ', myThid, ') ', |
121 |
|
& message(1:iEnd) |
122 |
|
ENDIF |
123 |
|
ENDIF |
124 |
#endif |
#endif |
125 |
WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999) |
|
|
& '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ', |
|
|
& message(iStart:iEnd) |
|
126 |
#ifndef FMTFTN_IO_THREAD_SAFE |
#ifndef FMTFTN_IO_THREAD_SAFE |
127 |
|
# ifdef USE_OMP_THREADING |
128 |
|
C$OMP END CRITICAL |
129 |
|
# else |
130 |
_END_CRIT(myThid) |
_END_CRIT(myThid) |
131 |
|
# endif |
132 |
#endif |
#endif |
|
ENDIF |
|
|
ENDIF |
|
|
|
|
|
#ifndef DISABLE_WRITE_TO_UNIT_ZERO |
|
|
C-- also write directly to unit 0 : |
|
|
IF ( numberOfProcs .EQ. 1 .AND. nThreads .EQ. 1 ) THEN |
|
|
IF (iEnd.NE.0) WRITE(0,'(A)') message(1:iEnd) |
|
133 |
ENDIF |
ENDIF |
|
#endif |
|
134 |
|
|
135 |
1000 CONTINUE |
1000 CONTINUE |
136 |
RETURN |
RETURN |
137 |
|
|
138 |
999 CONTINUE |
c 999 CONTINUE |
139 |
ioErrorCount(myThid) = ioErrorCount(myThid)+1 |
c ioErrorCount(myThid) = ioErrorCount(myThid)+1 |
140 |
GOTO 1000 |
c GOTO 1000 |
141 |
END |
END |
142 |
|
|
143 |
CBOP |
CBOP |
861 |
IF ( 10*((iBuf-7)/10) .EQ. iBuf-7 ) THEN |
IF ( 10*((iBuf-7)/10) .EQ. iBuf-7 ) THEN |
862 |
WRITE(plotBuf(iBuf:),'(A)') '|' |
WRITE(plotBuf(iBuf:),'(A)') '|' |
863 |
ELSE |
ELSE |
864 |
WRITE(plotBuf(iBuf:iBuf),'(I1)') MOD(iDx,10) |
WRITE(plotBuf(iBuf:iBuf),'(I1)') MOD(ABS(iDx),10) |
865 |
ENDIF |
ENDIF |
866 |
ENDDO |
ENDDO |
867 |
ENDDO |
ENDDO |