43 |
INTEGER i, j, k, m, n, bi, bj |
INTEGER i, j, k, m, n, bi, bj |
44 |
CHARACTER*8 parms1 |
CHARACTER*8 parms1 |
45 |
CHARACTER*3 mate_index |
CHARACTER*3 mate_index |
46 |
INTEGER mate |
INTEGER mate, mVec |
47 |
_RL qtmp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+Nrphys,nSx,nSy) |
_RL qtmp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+Nrphys,nSx,nSy) |
|
_RL qtmp2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+Nrphys,nSx,nSy) |
|
48 |
_RL undef, getcon |
_RL undef, getcon |
49 |
EXTERNAL getcon |
EXTERNAL getcon |
50 |
INTEGER ILNBLNK |
INTEGER ILNBLNK |
51 |
EXTERNAL ILNBLNK |
EXTERNAL ILNBLNK |
52 |
INTEGER ilen |
INTEGER ilen |
53 |
|
|
54 |
|
INTEGER ioUnit |
55 |
CHARACTER*(MAX_LEN_FNAM) pref |
CHARACTER*(MAX_LEN_FNAM) pref |
56 |
CHARACTER*(MAX_LEN_MBUF) suff |
CHARACTER*(MAX_LEN_MBUF) suff |
57 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
71 |
|
|
72 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
73 |
|
|
74 |
|
ioUnit= standardMessageUnit |
75 |
undef = getcon('UNDEF') |
undef = getcon('UNDEF') |
76 |
glf = globalFiles |
glf = globalFiles |
77 |
WRITE(suff,'(I10.10)') myIter |
WRITE(suff,'(I10.10)') myIter |
161 |
C- diagnostics is not empty : |
C- diagnostics is not empty : |
162 |
|
|
163 |
IF ( myThid.EQ.1 ) |
IF ( myThid.EQ.1 ) |
164 |
& WRITE(6,2000) m,cdiag(m),ndiag(m),gdiag(m) |
& WRITE(ioUnit,2000) m,cdiag(m),ndiag(m),gdiag(m) |
|
IF ( parms1(5:5).NE.'C' ) THEN |
|
165 |
|
|
166 |
DO k = 1,nlevels(listnum) |
IF ( parms1(5:5).EQ.'C' ) THEN |
167 |
CALL GETDIAG (levs(k,listnum),m,undef,qtmp1,myThid) |
C Check for Mate of a Counter Diagnostic |
168 |
ENDDO |
C -------------------------------------- |
169 |
|
mate_index = parms1(6:8) |
170 |
|
READ (mate_index,'(I3)') mate |
171 |
|
IF ( myThid.EQ.1 ) |
172 |
|
& WRITE(ioUnit,2003) cdiag(m),mate,cdiag(mate) |
173 |
|
ELSE |
174 |
|
mate = 0 |
175 |
|
|
176 |
C Check for Mate of a Vector Diagnostic |
C Check for Mate of a Vector Diagnostic |
177 |
C ------------------------------------- |
C ------------------------------------- |
178 |
IF ( parms1(1:1).EQ.'U' .OR. parms1(1:1).EQ.'V' ) THEN |
IF ( parms1(1:1).EQ.'U' .OR. parms1(1:1).EQ.'V' ) THEN |
179 |
mate_index = parms1(6:8) |
mate_index = parms1(6:8) |
180 |
READ (mate_index,'(I3)') mate |
READ (mate_index,'(I3)') mVec |
181 |
IF ( idiag(mate).NE.0 ) THEN |
IF ( idiag(mVec).NE.0 ) THEN |
182 |
IF ( myThid.EQ.1 ) |
IF ( myThid.EQ.1 ) |
183 |
& WRITE(6,2001) cdiag(m),mate,cdiag(mate) |
& WRITE(ioUnit,2001) cdiag(m),mVec,cdiag(mVec) |
184 |
ELSE |
ELSE |
185 |
IF ( myThid.EQ.1 ) |
IF ( myThid.EQ.1 ) |
186 |
& WRITE(6,2002) cdiag(m),mate,cdiag(mate) |
& WRITE(ioUnit,2002) cdiag(m),mVec,cdiag(mVec) |
187 |
ENDIF |
ENDIF |
188 |
ENDIF |
ENDIF |
189 |
|
ENDIF |
|
ELSE |
|
190 |
|
|
191 |
C Check for Mate of a Counter Diagnostic |
DO bj = myByLo(myThid), myByHi(myThid) |
192 |
C -------------------------------------- |
DO bi = myBxLo(myThid), myBxHi(myThid) |
|
mate_index = parms1(6:8) |
|
|
READ (mate_index,'(I3)') mate |
|
|
IF ( myThid.EQ.1 ) |
|
|
& WRITE(6,2003) cdiag(m),mate,cdiag(mate) |
|
193 |
DO k = 1,nlevels(listnum) |
DO k = 1,nlevels(listnum) |
194 |
CALL getdiag2(levs(k,listnum),m,undef,qtmp1,myThid) |
CALL GETDIAG( |
195 |
CALL getdiag2(levs(k,listnum),mate,undef,qtmp2,myThid) |
I levs(k,listnum),undef, |
196 |
DO bj = myByLo(myThid), myByHi(myThid) |
O qtmp1(1-OLx,1-OLy,k,bi,bj), |
197 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
I m,mate,bi,bj,myThid) |
|
DO j = 1,sNy |
|
|
DO i = 1,sNx |
|
|
IF (qtmp2(i,j,k,bi,bj).NE.0.) THEN |
|
|
qtmp1(i,j,k,bi,bj) = |
|
|
& qtmp1(i,j,k,bi,bj) / qtmp2(i,j,k,bi,bj) |
|
|
ELSE |
|
|
qtmp1(i,j,k,bi,bj) = undef |
|
|
ENDIF |
|
|
ENDDO |
|
|
ENDDO |
|
|
ENDDO |
|
|
ENDDO |
|
198 |
ENDDO |
ENDDO |
199 |
|
ENDDO |
200 |
ENDIF |
ENDDO |
201 |
|
|
202 |
C- end of empty diag / not empty block |
C- end of empty diag / not empty block |
203 |
ENDIF |
ENDIF |