/[MITgcm]/MITgcm/pkg/gmredi/gmredi_calc_diff.F
ViewVC logotype

Diff of /MITgcm/pkg/gmredi/gmredi_calc_diff.F

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

revision 1.4 by jmc, Sun Dec 16 18:54:49 2001 UTC revision 1.11 by mlosch, Mon Dec 12 15:34:08 2011 UTC
# Line 4  C $Name$ Line 4  C $Name$
4  #include "GMREDI_OPTIONS.h"  #include "GMREDI_OPTIONS.h"
5    
6        SUBROUTINE GMREDI_CALC_DIFF(        SUBROUTINE GMREDI_CALC_DIFF(
7       I        bi,bj,iMin,iMax,jMin,jMax,K,       I        bi,bj,iMin,iMax,jMin,jMax,kArg,kSize,
8       I        maskUp,       U        KappaRx,
9       U        KappaRT,KappaRS,       I        tracerIdentity,myThid)
      I        myThid)  
10    
11  C     /==========================================================\  C     /==========================================================\
12  C     | SUBROUTINE GMREDI_CALC_DIFF                              |  C     | SUBROUTINE GMREDI_CALC_DIFF                              |
13  C     | o Add contrubution to net diffusivity from GM/Redi       |  C     | o Add contribution to net diffusivity from GM/Redi       |
14  C     \==========================================================/  C     \==========================================================/
15        IMPLICIT NONE        IMPLICIT NONE
16    
# Line 20  C     == GLobal variables == Line 19  C     == GLobal variables ==
19  #include "EEPARAMS.h"  #include "EEPARAMS.h"
20  #include "PARAMS.h"  #include "PARAMS.h"
21  #include "GRID.h"  #include "GRID.h"
22    #include "GAD.h"
23    #ifdef ALLOW_LONGSTEP
24    #include "LONGSTEP.h"
25    #endif
26    #ifdef ALLOW_GMREDI
27    #include "GMREDI.h"
28    #endif
29    
30  C     == Routine arguments ==  C     == Routine arguments ==
31  C     bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation  C     bi, bj,   :: tile indices
32  C     maskUp  - land/water mask for Wvel points (above tracer level)  C     iMin,iMax :: Range of points for which calculation is done
33  C     myThid - Instance number for this innvocation of CALC_COMMON_FACTORS  C     jMin,jMax :: Range of points for which calculation is done
34    C     kArg      :: = 0 -> do the k-loop here and treat all levels
35    C                  > 0 -> k-loop is done outside and treat only level k=kArg
36    C     kSize     :: 3rd Dimension of the vertical diffusivity array KappaRx
37    C     KappaRx   :: vertical diffusivity array
38    C     myThid    :: Instance number for this innvocation of GMREDI_CALC_DIFF
39  C  C
40        INTEGER bi,bj,iMin,iMax,jMin,jMax,K        INTEGER bi,bj,iMin,iMax,jMin,jMax,kArg,kSize
41        _RS maskUp(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL KappaRx(1-Olx:sNx+Olx,1-Oly:sNy+Oly,kSize)
42        _RL KappaRT(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        INTEGER tracerIdentity
       _RL KappaRS(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)  
43        INTEGER myThid        INTEGER myThid
44    
45  #ifdef ALLOW_GMREDI  #ifdef ALLOW_GMREDI
 #include "GMREDI.h"  
46    
47  C     == Local variables ==  C     == Local variables ==
48  C     I, J   - Loop counters  C     i,j,k     :: Loop counters
49        INTEGER i,j        INTEGER i,j,k
50    
51        DO j=jMin,jMax  C--   Add Vertical diffusivity contribution from GM/Redi
52         DO i=iMin,iMax        IF ( kArg .EQ. 0 ) THEN
53          KappaRT(i,j,k) = KappaRT(i,j,k)+maskUp(i,j)*Kwz(i,j,k,bi,bj)  C-    do all levels :
54         ENDDO          DO k=1,MIN(Nr,kSize)
55        ENDDO           DO j=jMin,jMax
56              DO i=iMin,iMax
57        DO j=jMin,jMax             IF (tracerIdentity .LT. GAD_TR1) THEN
58         DO i=iMin,iMax              KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,k,bi,bj)
59          KappaRS(i,j,k) = KappaRS(i,j,k)+maskUp(i,j)*Kwz(i,j,k,bi,bj)       &           *maskInC(i,j,bi,bj)
60         ENDDO             ELSE
61        ENDDO  #ifdef ALLOW_LONGSTEP
62                KappaRx(i,j,k) = KappaRx(i,j,k)+LS_Kwz(i,j,k,bi,bj)
63    #else
64                KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,k,bi,bj)
65    #endif
66         &           *maskInC(i,j,bi,bj)
67               ENDIF
68              ENDDO
69             ENDDO
70            ENDDO
71          ELSE
72    C-    do level k=kArg only :
73             k = MIN(kArg,kSize)
74             DO j=jMin,jMax
75              DO i=iMin,iMax
76               IF (tracerIdentity .LT. GAD_TR1) THEN
77                KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,kArg,bi,bj)
78         &           *maskInC(i,j,bi,bj)
79               ELSE
80    #ifdef ALLOW_LONGSTEP
81                KappaRx(i,j,k) = KappaRx(i,j,k)+LS_Kwz(i,j,kArg,bi,bj)
82    #else
83                KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,kArg,bi,bj)
84    #endif
85         &           *maskInC(i,j,bi,bj)
86               ENDIF
87              ENDDO
88             ENDDO
89          ENDIF
90    
91  #endif /* ALLOW_GMREDI */  #endif /* ALLOW_GMREDI */
92    

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

  ViewVC Help
Powered by ViewVC 1.1.22