/[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.10 by dimitri, Mon Apr 23 20:46:49 2007 UTC revision 1.15 by jahn, Fri Jun 26 23:10:08 2009 UTC
# Line 6  C $Name$ Line 6  C $Name$
6    
7  CBOP  CBOP
8  C     !ROUTINE: CALC_3D_DIFFUSIVITY  C     !ROUTINE: CALC_3D_DIFFUSIVITY
9  C     !INTERFACE:  C     !INTERFACE:
10        SUBROUTINE CALC_3D_DIFFUSIVITY(        SUBROUTINE CALC_3D_DIFFUSIVITY(
11       I        bi,bj,iMin,iMax,jMin,jMax,       I        bi,bj,iMin,iMax,jMin,jMax,
12       I        trIdentity, trUseGMRedi, trUseKPP,       I        trIdentity, trUseGMRedi, trUseKPP,
13       O        KappaRTr,       O        KappaRTr,
# 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 62  C     i, j, k    :: Loop counters Line 65  C     i, j, k    :: Loop counters
65  C     iTr        :: passive tracer index  C     iTr        :: passive tracer index
66  C     msgBuf     :: message buffer  C     msgBuf     :: message buffer
67        INTEGER i,j,k        INTEGER i,j,k
68        _RL KbryanLewis79, KbryanLewisEQ        _RL KbryanLewis79
69    #ifdef ALLOW_BL79_LAT_VARY
70          _RL KbryanLewisEQ
71    #endif
72        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
73  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
74        INTEGER iTr        INTEGER iTr
# Line 79  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 92  CEOP Line 111  CEOP
111          DO k = 1,Nr          DO k = 1,Nr
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 || \  #if (defined ALLOW_3D_DIFFKR || \
116       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
117       &          + diffKr(i,j,k,bi,bj)       &          + diffKr(i,j,k,bi,bj)
# Line 117  CEOP Line 136  CEOP
136           ENDDO           ENDDO
137          ENDDO          ENDDO
138  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
139         ELSEIF ( trIdentity.GE.GAD_TR1         ELSEIF ( trIdentity.GE.GAD_TR1) THEN
      &   .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN  
140    
141          iTr = trIdentity - GAD_TR1 + 1          iTr = trIdentity - GAD_TR1 + 1
142          DO k = 1,Nr          DO k = 1,Nr
# Line 147  C--   Add physical pacakge contributions Line 165  C--   Add physical pacakge contributions
165    
166  #ifdef ALLOW_KPP  #ifdef ALLOW_KPP
167        IF (trUseKPP) THEN        IF (trUseKPP) THEN
168    C--   Set vertical diffusivity contribution from KPP
169         IF (trIdentity.EQ.GAD_TEMPERATURE) THEN         IF (trIdentity.EQ.GAD_TEMPERATURE) THEN
170           CALL KPP_CALC_DIFF_T(           CALL KPP_CALC_DIFF_T(
171       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
172       U        KappaRTr,       O        KappaRTr,
173       I        myThid)       I        myThid)
174         ELSE         ELSEIF (trIdentity.EQ.GAD_SALINITY) THEN
175           CALL KPP_CALC_DIFF_S(           CALL KPP_CALC_DIFF_S(
176       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
177       U        KappaRTr,       O        KappaRTr,
178         I        myThid)
179           ELSEIF ( trIdentity.GE.GAD_TR1) THEN
180             CALL KPP_CALC_DIFF_Ptr(
181         I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
182         O        KappaRTr,
183       I        myThid)       I        myThid)
184         ENDIF         ENDIF
185  #if (defined ALLOW_PTRACERS && ! (defined ALLOW_3D_DIFFKR || \  #if (defined ALLOW_PTRACERS && ! (defined ALLOW_3D_DIFFKR || \
186       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))))       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))))
187         IF ( trIdentity.GE.GAD_TR1         IF ( trIdentity.GE.GAD_TR1) THEN
      &   .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN  
188          iTr = trIdentity - GAD_TR1 + 1          iTr = trIdentity - GAD_TR1 + 1
189          DO k = 1,Nr          DO k = 1,Nr
190           DO j = 1-Oly, sNy+Oly           DO j = 1-Oly, sNy+Oly
# Line 177  C--   Add physical pacakge contributions Line 200  C--   Add physical pacakge contributions
200  #endif /* ALLOW_KPP */  #endif /* ALLOW_KPP */
201    
202  #ifdef ALLOW_GMREDI  #ifdef ALLOW_GMREDI
203        IF (trUseGMRedi) THEN        IF (trUseGMRedi) THEN
204           CALL GMREDI_CALC_DIFF(           CALL GMREDI_CALC_DIFF(
205       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,       I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
206       U        KappaRTr,       U        KappaRTr,
207       I        myThid)       I        trIdentity,myThid)
208        ENDIF        ENDIF
209  #endif  #endif
210    
# Line 202  C--   Add physical pacakge contributions Line 225  C--   Add physical pacakge contributions
225       I        myThid)       I        myThid)
226        ENDIF        ENDIF
227  #endif  #endif
228          
229  #ifdef ALLOW_GGL90  #ifdef ALLOW_GGL90
230        IF (useGGL90) THEN        IF (useGGL90) THEN
231           CALL GGL90_CALC_DIFF(           CALL GGL90_CALC_DIFF(
# Line 211  C--   Add physical pacakge contributions Line 234  C--   Add physical pacakge contributions
234       I        myThid)       I        myThid)
235        ENDIF        ENDIF
236  #endif  #endif
237          
238  C-    Apply mask to vertical diffusivity  C-    Apply mask to vertical diffusivity
239  C jmc: don't have the impression that masking is needed  C jmc: don't have the impression that masking is needed
240  C      but could be removed later if it's the case.  C      but could be removed later if it's the case.
241  c     DO j = 1-Oly, sNy+Oly  c     DO j = 1-Oly, sNy+Oly
242  c      DO i = 1-Olx, sNx+Olx  c      DO i = 1-Olx, sNx+Olx

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.22