/[MITgcm]/MITgcm/pkg/diagnostics/diagstats_global.F
ViewVC logotype

Diff of /MITgcm/pkg/diagnostics/diagstats_global.F

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

revision 1.3 by jmc, Sun Jul 10 00:52:12 2005 UTC revision 1.4 by jmc, Thu Feb 14 15:41:43 2008 UTC
# Line 48  C     !LOCAL VARIABLES: Line 48  C     !LOCAL VARIABLES:
48        PARAMETER ( iv = nStats - 2 , im = nStats - 1 , ix = nStats )        PARAMETER ( iv = nStats - 2 , im = nStats - 1 , ix = nStats )
49        INTEGER bi, bj        INTEGER bi, bj
50        INTEGER i, k, kd, kCnt, klev, kMlev        INTEGER i, k, kd, kCnt, klev, kMlev
51          _RL     tmpMin, tmpMax, tmpVol
52    
53  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
54    
# Line 90  C--     Retrieve tile statistics first Line 91  C--     Retrieve tile statistics first
91              kd = iSm + k - 1              kd = iSm + k - 1
92              IF ( qSdiag(0,jReg,kd,bi,bj).GT.0. ) THEN              IF ( qSdiag(0,jReg,kd,bi,bj).GT.0. ) THEN
93               IF ( qtmp2(0,k).LE.0. ) THEN               IF ( qtmp2(0,k).LE.0. ) THEN
94                DO i=0,nStats                DO i=0,1
95                  qtmp2(i,k) = qSdiag(i,jReg,kd,bi,bj)                  qtmp2(i,k) = qSdiag(i,jReg,kd,bi,bj)
96                ENDDO                ENDDO
97               ELSE               ELSE
98                DO i=0,iv                DO i=0,1
99                  qtmp2(i,k) = qtmp2(i,k) + qSdiag(i,jReg,kd,bi,bj)                  qtmp2(i,k) = qtmp2(i,k) + qSdiag(i,jReg,kd,bi,bj)
100                ENDDO                ENDDO
               qtmp2(im,k) = MIN( qtmp2(im,k),qSdiag(im,jReg,kd,bi,bj) )  
               qtmp2(ix,k) = MAX( qtmp2(ix,k),qSdiag(ix,jReg,kd,bi,bj) )  
101               ENDIF               ENDIF
102              ENDIF              ENDIF
103             ENDDO             ENDDO
# Line 110  C-       end tile index loops Line 109  C-       end tile index loops
109    
110  C--     Global min,max & sum (at each level) over all thread & processors :  C--     Global min,max & sum (at each level) over all thread & processors :
111          DO k=1,klev          DO k=1,klev
112               tmpVol = qtmp1(0,k)
113             DO i=0,iv             DO i=0,iv
114              _GLOBAL_SUM_R8(qtmp1(i,k),myThid)              _GLOBAL_SUM_R8(qtmp1(i,k),myThid)
115             ENDDO             ENDDO
116              qtmp1(im,k) = -qtmp1(im,k)             IF ( qtmp1(0,k).GT.0. .AND. tmpVol.LE.0. ) THEN
117              _GLOBAL_MAX_R8(qtmp1(im,k),myThid)  C-      In case 1 processor has only empty tiles:
118              qtmp1(im,k) = -qtmp1(im,k)               tmpMax = qtmp1(1,k)/qtmp1(0,k)
119              _GLOBAL_MAX_R8(qtmp1(ix,k),myThid)               tmpmin = -tmpMax
120               ELSE
121                 tmpMin = -qtmp1(im,k)
122                 tmpMax =  qtmp1(ix,k)
123               ENDIF
124               _GLOBAL_MAX_R8(tmpMin,myThid)
125               _GLOBAL_MAX_R8(tmpMax,myThid)
126               qtmp1(im,k) = -tmpMin
127               qtmp1(ix,k) =  tmpMax
128          ENDDO          ENDDO
129          IF ( mate.GT.0 ) THEN          IF ( mate.GT.0 ) THEN
130           DO k=1,kMlev           DO k=1,kMlev
131             DO i=0,iv             DO i=0,1
132              _GLOBAL_SUM_R8(qtmp2(i,k),myThid)              _GLOBAL_SUM_R8(qtmp2(i,k),myThid)
133             ENDDO             ENDDO
             qtmp2(im,k) = -qtmp2(im,k)  
             _GLOBAL_MAX_R8(qtmp2(im,k),myThid)  
             qtmp2(im,k) = -qtmp2(im,k)  
             _GLOBAL_MAX_R8(qtmp2(ix,k),myThid)  
134           ENDDO           ENDDO
135          ENDIF          ENDIF
136    
137  C--     Vertical integral, min & max :  C--     Vertical integral, min & max :
138          DO k=1,klev          DO k=1,klev
139              IF ( qtmp1(0,k).GT.0. ) THEN
140             IF ( qtmp1(0,0).LE.0. ) THEN             IF ( qtmp1(0,0).LE.0. ) THEN
141               DO i=0,nStats               DO i=0,nStats
142                qtmp1(i,0) = qtmp1(i,k)                qtmp1(i,0) = qtmp1(i,k)
# Line 143  C--     Vertical integral, min & max : Line 148  C--     Vertical integral, min & max :
148                qtmp1(im,0) = MIN(qtmp1(im,0),qtmp1(im,k))                qtmp1(im,0) = MIN(qtmp1(im,0),qtmp1(im,k))
149                qtmp1(ix,0) = MAX(qtmp1(ix,0),qtmp1(ix,k))                qtmp1(ix,0) = MAX(qtmp1(ix,0),qtmp1(ix,k))
150             ENDIF             ENDIF
151              ENDIF
152          ENDDO          ENDDO
153          IF ( mate.GT.0 ) THEN          IF ( mate.GT.0 ) THEN
154           DO k=1,kMlev           DO k=1,kMlev
155              IF ( qtmp2(0,k).GT.0. ) THEN
156             IF ( qtmp2(0,0).LE.0. ) THEN             IF ( qtmp2(0,0).LE.0. ) THEN
157               DO i=0,nStats               DO i=0,1
158                qtmp2(i,0) = qtmp2(i,k)                qtmp2(i,0) = qtmp2(i,k)
159               ENDDO               ENDDO
160             ELSE             ELSE
161               DO i=0,iv               DO i=0,1
162                qtmp2(i,0) = qtmp2(i,0) + qtmp2(i,k)                qtmp2(i,0) = qtmp2(i,0) + qtmp2(i,k)
163               ENDDO               ENDDO
               qtmp2(im,0) = MIN(qtmp2(im,0),qtmp2(im,k))  
               qtmp2(ix,0) = MAX(qtmp2(ix,0),qtmp2(ix,k))  
164             ENDIF             ENDIF
165              ENDIF
166           ENDDO           ENDDO
167          ENDIF          ENDIF
168    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.22