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

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

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

revision 1.18 by jmc, Mon Feb 7 03:07:49 2005 UTC revision 1.20 by jmc, Thu May 19 01:18:31 2005 UTC
# Line 182  C ************************************** Line 182  C **************************************
182  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
183    
184  CBOP 0  CBOP 0
185  C     !ROUTINE: DIAGNOSTICS_IS_ON  C     !ROUTINE: DIAGNOSTICS_COUNT
   
186  C     !INTERFACE:  C     !INTERFACE:
187        LOGICAL FUNCTION DIAGNOSTICS_IS_ON( diagName, myThid )        SUBROUTINE DIAGNOSTICS_COUNT (chardiag,
188         I                              biArg, bjArg, myThid)
189    
190  C     !DESCRIPTION:  C     !DESCRIPTION:
191  C     *==========================================================*  C***********************************************************************
192  C     | FUNCTION DIAGNOSTIC_IS_ON  C   routine to increment the diagnostic counter only
193  C     | o Return TRUE if diagnostics "diagName" is Active  C***********************************************************************
 C     *==========================================================*  
   
194  C     !USES:  C     !USES:
195        IMPLICIT NONE        IMPLICIT NONE
196    
197    C     == Global variables ===
198  #include "EEPARAMS.h"  #include "EEPARAMS.h"
199  #include "SIZE.h"  #include "SIZE.h"
200  #include "DIAGNOSTICS_SIZE.h"  #include "DIAGNOSTICS_SIZE.h"
201  #include "DIAGNOSTICS.h"  #include "DIAGNOSTICS.h"
202    
203  C     !INPUT PARAMETERS:  C     !INPUT PARAMETERS:
204  C     diagName   ::  diagnostic identificator name (8 characters long)  C***********************************************************************
205  C     myThid     ::  my thread Id number  C  Arguments Description
206        CHARACTER*8  diagName  C  ----------------------
207        INTEGER      myThid  C     chardiag :: Character expression for diag to increment the counter
208    C     biArg    :: X-direction tile number, or 0 if called outside bi,bj loops
209    C     bjArg    :: Y-direction tile number, or 0 if called outside bi,bj loops
210    C     myThid   :: my thread Id number
211    C***********************************************************************
212          CHARACTER*8 chardiag
213          INTEGER biArg, bjArg
214          INTEGER myThid
215  CEOP  CEOP
216    
217  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
218        INTEGER j,n,m  C ===============
219          INTEGER m, n
220          INTEGER ndiagnum, ipointer
221    c     INTEGER bi, bj
222    c     CHARACTER*(MAX_LEN_MBUF) msgBuf
223    
224        DIAGNOSTICS_IS_ON = .FALSE.  C Run through list of active diagnostics to make sure
225    C we are trying to increment a valid diagnostic-counter
226    
227          ndiagnum = 0
228          ipointer = 0
229        DO n=1,nlists        DO n=1,nlists
230         DO m=1,nActive(n)         DO m=1,nActive(n)
231          IF ( diagName.EQ.flds(m,n) ) THEN          IF ( chardiag.EQ.flds(m,n) ) THEN
232            j = jdiag(m,n)               ndiagnum = jdiag(m,n)
233            IF ( idiag(j).NE.0 .AND. ndiag(j).GE.0 )           IF (ndiag(ndiagnum).GE.0) ipointer = idiag(ndiagnum)
      &         DIAGNOSTICS_IS_ON = .TRUE.  
234          ENDIF          ENDIF
235         ENDDO         ENDDO
236        ENDDO        ENDDO
237    
238        RETURN  C If-sequence to see if we are a valid and an active diagnostic
239    
240          IF ( ndiagnum.NE.0 .AND. ipointer.NE.0 ) THEN
241    
242    C Increment the counter for the diagnostic (if we are at bi=bj=myThid=1)
243           _BEGIN_MASTER(myThid)
244            IF ( (biArg.EQ.1 .AND. bjArg.EQ.1) .OR.
245         &       (biArg.EQ.0 .AND. bjArg.EQ.0) )
246         &                     ndiag(ndiagnum) = ndiag(ndiagnum) + 1
247           _END_MASTER(myThid)
248    
249    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
250    
251    C-- note: counter could become a tiled array, and then it would be:
252    c       IF ( biArg.EQ.0 .AND. bjArg.EQ.0 ) THEN
253    c        DO bj=myByLo(myThid), myByHi(myThid)
254    c         DO bi=myBxLo(myThid), myBxHi(myThid)
255    c          ndiag(ndiagnum,bi,bj) = ndiag(ndiagnum,bi,bj) + 1
256    c         ENDDO
257    c        ENDDO
258    c       ELSE
259    c          bi = MIN(biArg,nSx)
260    c          bj = MIN(bjArg,nSy)
261    c          ndiag(ndiagnum,bi,bj) = ndiag(ndiagnum,bi,bj) + 1
262    c       ENDIF
263    
264          ENDIF
265    
266          RETURN
267        END        END
268    
269  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.22