/[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.1 by adcroft, Wed Jun 21 19:42:54 2000 UTC revision 1.9 by dfer, Tue Feb 12 23:01:18 2008 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    C $Name$
3    
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       O        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 19  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    #ifdef ALLOW_GMREDI
23    #include "GMREDI.h"
24    #endif
25    
26  C     == Routine arguments ==  C     == Routine arguments ==
27  C     bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation  C     bi, bj,   :: tile indices
28  C     maskUp  - land/water mask for Wvel points (above tracer level)  C     iMin,iMax :: Range of points for which calculation is done
29  C     myThid - Instance number for this innvocation of CALC_COMMON_FACTORS  C     jMin,jMax :: Range of points for which calculation is done
30    C     kArg      :: = 0 -> do the k-loop here and treat all levels
31    C                  > 0 -> k-loop is done outside and treat only level k=kArg
32    C     kSize     :: 3rd Dimension of the vertical diffusivity array KappaRx
33    C     KappaRx   :: vertical diffusivity array
34    C     myThid    :: Instance number for this innvocation of GMREDI_CALC_DIFF
35  C  C
36        INTEGER bi,bj,iMin,iMax,jMin,jMax,K        INTEGER bi,bj,iMin,iMax,jMin,jMax,kArg,kSize
37        _RS maskUp(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL KappaRx(1-Olx:sNx+Olx,1-Oly:sNy+Oly,kSize)
38        _RL KappaRT(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        INTEGER tracerIdentity
       _RL KappaRS(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)  
39        INTEGER myThid        INTEGER myThid
40    
41  #ifdef ALLOW_GMREDI  #ifdef ALLOW_GMREDI
 #include "GMREDI.h"  
42    
43  C     == Local variables ==  C     == Local variables ==
44  C     I, J, K - Loop counters  C     i,j,k     :: Loop counters
45        INTEGER i,j        INTEGER i,j,k
46    
47        DO j=jMin,jMax  C--   Add Vertical diffusivity contribution from GM/Redi
48         DO i=iMin,iMax        IF ( kArg .EQ. 0 ) THEN
49          KappaRT(i,j,k) = KappaRT(i,j,k)+maskUp(i,j)*  C-    do all levels :
50       &       ( GM_background_K          DO k=1,MIN(Nr,kSize)
51  #ifdef GM_VISBECK_VARIABLE_K           DO j=jMin,jMax
52       &          + VisbeckK(i,j,myThid)            DO i=iMin,iMax
53  #endif              KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,k,bi,bj)
54       &       )*Kwz(i,j,k,myThid)            ENDDO
55         ENDDO           ENDDO
56        ENDDO          ENDDO
57          ELSE
58        DO j=jMin,jMax  C-    do level k=kArg only :
59         DO i=iMin,iMax           k = MIN(kArg,kSize)
60          KappaRS(i,j,k) = KappaRS(i,j,k)+maskUp(i,j)*           DO j=jMin,jMax
61       &       ( GM_background_K            DO i=iMin,iMax
62  #ifdef GM_VISBECK_VARIABLE_K              KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,kArg,bi,bj)
63       &          + VisbeckK(i,j,myThid)            ENDDO
64  #endif           ENDDO
65       &       )*Kwz(i,j,k,myThid)        ENDIF
        ENDDO  
       ENDDO  
66    
67  #endif /* ALLOW_GMREDI */  #endif /* ALLOW_GMREDI */
68    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22