/[MITgcm]/MITgcm/pkg/ggl90/ggl90_calc_visc.F
ViewVC logotype

Diff of /MITgcm/pkg/ggl90/ggl90_calc_visc.F

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

revision 1.3 by dfer, Fri Oct 10 21:18:10 2008 UTC revision 1.5 by jmc, Thu Oct 8 20:07:18 2009 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
4  #include "GGL90_OPTIONS.h"  #include "GGL90_OPTIONS.h"
5    
6        SUBROUTINE GGL90_CALC_VISC(        SUBROUTINE GGL90_CALC_VISC(
7       I        bi,bj,iMin,iMax,jMin,jMax,K,       I        bi,bj,iMin,iMax,jMin,jMax,K,
8       U        KappaRU,KappaRV,       U        KappaRU,KappaRV,
9       I        myThid)       I        myThid)
10    
11  CBOP  CBOP
12  C     /==========================================================\  C     *==========================================================*
13  C     | SUBROUTINE GGL90_CALC_VISC                               |  C     | SUBROUTINE GGL90_CALC_VISC                               |
14  C     | o Add contrubution to net viscosity from GGL90 mixing    |  C     | o Add contrubution to net viscosity from GGL90 mixing    |
15  C     \==========================================================/  C     *==========================================================*
16        IMPLICIT NONE        IMPLICIT NONE
17    
18  C     == GLobal variables ==  C     == GLobal variables ==
# Line 20  C     == GLobal variables == Line 21  C     == GLobal variables ==
21  #include "PARAMS.h"  #include "PARAMS.h"
22  #include "DYNVARS.h"  #include "DYNVARS.h"
23  #include "GRID.h"  #include "GRID.h"
24    #include "GGL90.h"
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, iMin, iMax, jMin, jMax - Range of points for which calculation
# Line 29  C Line 31  C
31        _RL KappaRU(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        _RL KappaRU(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
32        _RL KappaRV(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        _RL KappaRV(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
33        INTEGER myThid        INTEGER myThid
34    CEOP
35    
36  #ifdef ALLOW_GGL90  #ifdef ALLOW_GGL90
 #include "GGL90.h"  
37    
38  C     == Local variables ==  C     == Local variables ==
39  C     I, J, K - Loop counters  C     I, J, K - Loop counters
40        INTEGER i,j        INTEGER i,j
41  CEOP        _RL p4, p8, p16
42    
43          p4=0.25 _d 0
44          p8=0.125 _d 0
45          p16=0.0625 _d 0
46    
47        DO j=jMin,jMax        DO j=jMin,jMax
48         DO i=iMin,iMax         DO i=iMin,iMax
49    #ifdef ALLOW_GGL90_SMOOTH
50            KappaRU(i,j,k) = KappaRU(i,j,k) +
51         & ((
52         &   p4 *(GGL90viscAr(i  ,j  ,k,bi,bj) * mskCor(i  ,j  ,bi,bj)
53         &       +GGL90viscAr(i-1,j  ,k,bi,bj) * mskCor(i-1,j  ,bi,bj))
54         &  +p8 *(GGL90viscAr(i-1,j-1,k,bi,bj) * mskCor(i-1,j-1,bi,bj)
55         &       +GGL90viscAr(i-1,j+1,k,bi,bj) * mskCor(i-1,j+1,bi,bj)
56         &       +GGL90viscAr(i  ,j-1,k,bi,bj) * mskCor(i  ,j-1,bi,bj)
57         &       +GGL90viscAr(i  ,j+1,k,bi,bj) * mskCor(i  ,j+1,bi,bj))
58         &  )
59         & /(p4 * 2. _d 0
60         &  +p8 *(      maskC(i-1,j-1,k,bi,bj) * mskCor(i-1,j-1,bi,bj)
61         &       +      maskC(i-1,j+1,k,bi,bj) * mskCor(i-1,j+1,bi,bj)
62         &       +      maskC(i  ,j-1,k,bi,bj) * mskCor(i  ,j-1,bi,bj)
63         &       +      maskC(i  ,j+1,k,bi,bj) * mskCor(i  ,j+1,bi,bj))
64         &  ) - viscArNr(k) )
65         &  *maskC(i  ,j,k,bi,bj)*mskCor(i  ,j,bi,bj)
66         &  *maskC(i-1,j,k,bi,bj)*mskCor(i-1,j,bi,bj)
67    #else
68          KappaRU(i,j,k) = KappaRU(i,j,k) + _maskW(i,j,k,bi,bj) *          KappaRU(i,j,k) = KappaRU(i,j,k) + _maskW(i,j,k,bi,bj) *
69       &                   (.5 _d 0*(GGL90viscAr(i,j,k,bi,bj)       &                   (.5 _d 0*(GGL90viscAr(i,j,k,bi,bj)
70       &                            +GGL90viscAr(i-1,j,k,bi,bj))       &                            +GGL90viscAr(i-1,j,k,bi,bj))
71       &                    -viscAr)       &                    - viscArNr(k) )
72    #endif
73         ENDDO         ENDDO
74        ENDDO        ENDDO
75    
76        DO j=jMin,jMax        DO j=jMin,jMax
77         DO i=iMin,iMax         DO i=iMin,iMax
78    #ifdef ALLOW_GGL90_SMOOTH
79            KappaRV(i,j,k) = KappaRV(i,j,k) +
80         & ((
81         &   p4 *(GGL90viscAr(i  ,j  ,k,bi,bj) * mskCor(i  ,j  ,bi,bj)
82         &       +GGL90viscAr(i  ,j-1,k,bi,bj) * mskCor(i  ,j-1,bi,bj))
83         &  +p8 *(GGL90viscAr(i-1,j  ,k,bi,bj) * mskCor(i-1,j  ,bi,bj)
84         &       +GGL90viscAr(i-1,j-1,k,bi,bj) * mskCor(i-1,j-1,bi,bj)
85         &       +GGL90viscAr(i+1,j  ,k,bi,bj) * mskCor(i+1,j  ,bi,bj)
86         &       +GGL90viscAr(i+1,j-1,k,bi,bj) * mskCor(i+1,j-1,bi,bj))
87         &  )
88         & /(p4 * 2. _d 0
89         &  +p8 *(      maskC(i-1,j  ,k,bi,bj) * mskCor(i-1,j  ,bi,bj)
90         &       +      maskC(i-1,j-1,k,bi,bj) * mskCor(i-1,j-1,bi,bj)
91         &       +      maskC(i+1,j  ,k,bi,bj) * mskCor(i+1,j  ,bi,bj)
92         &       +      maskC(i+1,j-1,k,bi,bj) * mskCor(i+1,j-1,bi,bj))
93         &  ) - viscArNr(k) )
94         &   *maskC(i,j  ,k,bi,bj)*mskCor(i,j  ,bi,bj)
95         &   *maskC(i,j-1,k,bi,bj)*mskCor(i,j-1,bi,bj)
96    #else
97          KappaRV(i,j,k) = KappaRV(i,j,k) + _maskS(i,j,k,bi,bj) *          KappaRV(i,j,k) = KappaRV(i,j,k) + _maskS(i,j,k,bi,bj) *
98       &                   (.5 _d 0*(GGL90viscAr(i,j,k,bi,bj)       &                   (.5 _d 0*(GGL90viscAr(i,j,k,bi,bj)
99       &                            +GGL90viscAr(i,j-1,k,bi,bj))       &                            +GGL90viscAr(i,j-1,k,bi,bj))
100       &                    -viscAr)       &                    - viscArNr(k) )
101    #endif
102         ENDDO         ENDDO
103        ENDDO        ENDDO
104    

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

  ViewVC Help
Powered by ViewVC 1.1.22