C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_diagnostics_fill.F,v 1.1 2005/01/04 02:41:56 jmc Exp $
C $Name:  $

#include "PTRACERS_OPTIONS.h"

C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP 1
C     !ROUTINE: PTRACERS_DIAGNOSTICS_FILL

C     !INTERFACE:
      SUBROUTINE PTRACERS_DIAGNOSTICS_FILL(myThid)

C     !DESCRIPTION:
C     Fill the diagnostics array locations
      
C     !USES:
      IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "GRID.h"
#include "DYNVARS.h"
#include "PTRACERS_SIZE.h"
#include "PTRACERS.h"

C     !INPUT PARAMETERS:
      INTEGER myThid 
CEOP

#ifdef ALLOW_DIAGNOSTICS

C     !LOCAL VARIABLES:
      LOGICAL  DIAGNOSTICS_IS_ON
      EXTERNAL 
      _RL dummy(1-OLx:sNx+Olx,1-Oly:sNy+Oly,Nr,Nsx,Nsy)
      INTEGER i,j,K,N,bi,bj
      CHARACTER*8 diagname
      INTEGER km1
      
      diagname = '        '
      
c     DO N = 1,PTRACERS_numInUse
C-    due to format (I2) and diagnostics name limitation, 
C      => do not go beyong 99 tracers
      DO N = 1,MIN(99,PTRACERS_numInUse)
        
        diagname = '        '
        WRITE(diagname,'(A4,I2.2)') 'TRAC',N
        CALL DIAGNOSTICS_FILL( ptracer(1-Olx,1-Oly,1,1,1,N), diagname,
     &                         0,Nr,0,1,1,myThid )
        
        diagname = '        '
        WRITE(diagname,'(A5,I2.2)') 'UTRAC',N
        IF ( DIAGNOSTICS_IS_ON(diagname,myThid) ) THEN
         DO bj = myByLo(myThid), myByHi(myThid)
          DO bi = myBxLo(myThid), myBxHi(myThid)
            DO K=1,Nr
              DO j = 1,sNy
                DO i = 1,sNx
                  dummy(i,j,K,bi,bj) = 
     &                 uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj) *
     &                 0.5 _d 0*(ptracer(i,j,K,bi,bj,N)
     &                       + ptracer(i-1,j,K,bi,bj,N))
                ENDDO
              ENDDO
            ENDDO
          ENDDO
         ENDDO
         CALL DIAGNOSTICS_FILL( dummy, diagname, 0,Nr,0,1,1,myThid )
        ENDIF
        
        diagname = '        '
        WRITE(diagname,'(A5,I2.2)') 'VTRAC',N
        IF ( DIAGNOSTICS_IS_ON(diagname,myThid) ) THEN
         DO bj = myByLo(myThid), myByHi(myThid)
          DO bi = myBxLo(myThid), myBxHi(myThid)
            DO K=1,Nr
              DO j = 1,sNy
                DO i = 1,sNx
                  dummy(i,j,K,bi,bj) = 
     &                 vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj) *
     &                 0.5 _d 0*(ptracer(i,j,K,bi,bj,N)
     &                       + ptracer(i,j-1,K,bi,bj,N))
                ENDDO
              ENDDO
            ENDDO
          ENDDO
         ENDDO
         CALL DIAGNOSTICS_FILL( dummy, diagname, 0,Nr,0,1,1,myThid )
        ENDIF
        
        diagname = '        '
        WRITE(diagname,'(A5,I2.2)') 'WTRAC',N
        IF ( DIAGNOSTICS_IS_ON(diagname,myThid) ) THEN
         DO bj = myByLo(myThid), myByHi(myThid)
          DO bi = myBxLo(myThid), myBxHi(myThid)
            DO K=1,Nr
              km1 = MAX(K-1,1)
              DO j = 1,sNy
                DO i = 1,sNx
                  dummy(i,j,K,bi,bj) = wVel(i,j,K,bi,bj) *
     &                 0.5 _d 0*(ptracer(i,j,K,bi,bj,N)
     &                       + ptracer(i,j,km1,bi,bj,N))
                ENDDO
              ENDDO
            ENDDO
          ENDDO
         ENDDO
         CALL DIAGNOSTICS_FILL( dummy, diagname, 0,Nr,0,1,1,myThid )
        ENDIF
        
      ENDDO

#endif /* ALLOW_DIAGNOSTICS */

      RETURN 
      END


C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|