/[MITgcm]/MITgcm/model/src/calc_3d_diffusivity.F
ViewVC logotype

Diff of /MITgcm/model/src/calc_3d_diffusivity.F

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

revision 1.12 by dimitri, Thu Sep 27 14:42:59 2007 UTC revision 1.17 by jmc, Tue Sep 20 22:25:23 2011 UTC
# Line 36  C     == GLobal variables == Line 36  C     == GLobal variables ==
36  #endif  #endif
37  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
38  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
39  #include "PTRACERS.h"  #include "PTRACERS_PARAMS.h"
40    #endif
41    #ifdef ALLOW_LONGSTEP
42    #include "LONGSTEP.h"
43  #endif  #endif
44    
45  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
# Line 82  CEOP Line 85  CEOP
85  #endif  #endif
86          DO j = 1-Oly,sNy+Oly          DO j = 1-Oly,sNy+Oly
87           DO i = 1-Olx,sNx+Olx           DO i = 1-Olx,sNx+Olx
88            KappaRTr(i,j,k) =  #ifdef ALLOW_LONGSTEP
89              IF ( trIdentity .GE. GAD_TR1) THEN
90               KappaRTr(i,j,k) =
91         &         LS_IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
92         &         + KbryanLewis79
93    #ifdef ALLOW_BL79_LAT_VARY
94         &         + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)
95    #endif
96              ELSE
97    #else
98              IF ( .TRUE. ) THEN
99    #endif /* ALLOW_LONGSTEP */
100               KappaRTr(i,j,k) =
101       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
102       &         + KbryanLewis79       &         + KbryanLewis79
103  #ifdef ALLOW_BL79_LAT_VARY  #ifdef ALLOW_BL79_LAT_VARY
104       &         + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)       &         + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)
105  #endif  #endif
106              ENDIF
107           ENDDO           ENDDO
108          ENDDO          ENDDO
109         ENDDO         ENDDO
# Line 96  CEOP Line 112  CEOP
112           DO j = 1-Oly,sNy+Oly           DO j = 1-Oly,sNy+Oly
113            DO i = 1-Olx,sNx+Olx            DO i = 1-Olx,sNx+Olx
114             KappaRTr(i,j,k) = KappaRTr(i,j,k)             KappaRTr(i,j,k) = KappaRTr(i,j,k)
115  #if (defined ALLOW_3D_DIFFKR || \  #ifdef ALLOW_3D_DIFFKR
      (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))  
116       &          + diffKr(i,j,k,bi,bj)       &          + diffKr(i,j,k,bi,bj)
117  #else  #else
118       &          + diffKrNrT(k)       &          + diffKrNrT(k)
# Line 110  CEOP Line 125  CEOP
125           DO j = 1-Oly, sNy+Oly           DO j = 1-Oly, sNy+Oly
126            DO i = 1-Olx, sNx+Olx            DO i = 1-Olx, sNx+Olx
127             KappaRTr(i,j,k) = KappaRTr(i,j,k)             KappaRTr(i,j,k) = KappaRTr(i,j,k)
128  #if (defined ALLOW_3D_DIFFKR || \  #ifdef ALLOW_3D_DIFFKR
      (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))  
129       &          + diffKr(i,j,k,bi,bj)       &          + diffKr(i,j,k,bi,bj)
130  #else  #else
131       &          + diffKrNrS(k)       &          + diffKrNrS(k)
# Line 120  CEOP Line 134  CEOP
134           ENDDO           ENDDO
135          ENDDO          ENDDO
136  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
137         ELSEIF ( trIdentity.GE.GAD_TR1         ELSEIF ( trIdentity.GE.GAD_TR1) THEN
      &   .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN  
138    
139          iTr = trIdentity - GAD_TR1 + 1          iTr = trIdentity - GAD_TR1 + 1
140          DO k = 1,Nr          DO k = 1,Nr
141           DO j = 1-Oly, sNy+Oly           DO j = 1-Oly, sNy+Oly
142            DO i = 1-Olx, sNx+Olx            DO i = 1-Olx, sNx+Olx
143             KappaRTr(i,j,k) = KappaRTr(i,j,k)             KappaRTr(i,j,k) = KappaRTr(i,j,k)
144  #if (defined ALLOW_3D_DIFFKR || \  #ifdef ALLOW_3D_DIFFKR
      (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))  
145       &          + diffKr(i,j,k,bi,bj)       &          + diffKr(i,j,k,bi,bj)
146  #else  #else
147       &          + PTRACERS_diffKrNr(k,iTr)       &          + PTRACERS_diffKrNr(k,iTr)
# Line 156  C--   Set vertical diffusivity contribut Line 168  C--   Set vertical diffusivity contribut
168       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
169       O        KappaRTr,       O        KappaRTr,
170       I        myThid)       I        myThid)
171         ELSE         ELSEIF (trIdentity.EQ.GAD_SALINITY) THEN
172           CALL KPP_CALC_DIFF_S(           CALL KPP_CALC_DIFF_S(
173       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
174       O        KappaRTr,       O        KappaRTr,
175       I        myThid)       I        myThid)
176    #ifdef ALLOW_PTRACERS
177           ELSEIF ( trIdentity.GE.GAD_TR1) THEN
178             iTr = trIdentity - GAD_TR1 + 1
179             CALL KPP_CALC_DIFF_Ptr(
180         I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
181         O        KappaRTr,
182         I        iTr, myThid )
183    #endif /* ALLOW_PTRACERS */
184           ELSE
185            WRITE(msgBuf,'(A,I4)')
186         &       ' CALC_3D_DIFFUSIVITY: Invalid tracer Id: ',trIdentity
187            CALL PRINT_ERROR( msgBuf, myThid )
188            STOP 'ABNORMAL END: S/R CALC_3D_DIFFUSIVITY'
189         ENDIF         ENDIF
 #if (defined ALLOW_PTRACERS && ! (defined ALLOW_3D_DIFFKR || \  
      (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))))  
        IF ( trIdentity.GE.GAD_TR1  
      &   .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN  
         iTr = trIdentity - GAD_TR1 + 1  
         DO k = 1,Nr  
          DO j = 1-Oly, sNy+Oly  
           DO i = 1-Olx, sNx+Olx  
            KappaRTr(i,j,k) = KappaRTr(i,j,k)  
      &          - diffKrNrS(k) + PTRACERS_diffKrNr(k,iTr)  
           ENDDO  
          ENDDO  
         ENDDO  
        ENDIF  
 #endif  
190        ENDIF        ENDIF
191  #endif /* ALLOW_KPP */  #endif /* ALLOW_KPP */
192    
# Line 185  C--   Set vertical diffusivity contribut Line 195  C--   Set vertical diffusivity contribut
195           CALL GMREDI_CALC_DIFF(           CALL GMREDI_CALC_DIFF(
196       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
197       U        KappaRTr,       U        KappaRTr,
198       I        myThid)       I        trIdentity,myThid)
199        ENDIF        ENDIF
200  #endif  #endif
201    
# Line 217  C--   Set vertical diffusivity contribut Line 227  C--   Set vertical diffusivity contribut
227  #endif  #endif
228    
229  C-    Apply mask to vertical diffusivity  C-    Apply mask to vertical diffusivity
230  C jmc: don't have the impression that masking is needed  C jmc: do not have the impression that masking is needed
231  C      but could be removed later if it's the case.  C      but could be removed later if it is the case.
232  c     DO j = 1-Oly, sNy+Oly  c     DO j = 1-Oly, sNy+Oly
233  c      DO i = 1-Olx, sNx+Olx  c      DO i = 1-Olx, sNx+Olx
234  c       KappaRTr(i,j,k) = maskUp(i,j)*KappaRTr(i,j,k)  c       KappaRTr(i,j,k) = maskUp(i,j)*KappaRTr(i,j,k)

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.22