/[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.2 by jmc, Thu Oct 28 00:30:57 2004 UTC revision 1.10 by dimitri, Mon Apr 23 20:46:49 2007 UTC
# Line 31  C     == GLobal variables == Line 31  C     == GLobal variables ==
31  #include "PARAMS.h"  #include "PARAMS.h"
32  #include "DYNVARS.h"  #include "DYNVARS.h"
33  #include "GRID.h"  #include "GRID.h"
34    #ifdef ALLOW_GENERIC_ADVDIFF
35  #include "GAD.h"  #include "GAD.h"
36    #endif
37  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
38  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
39  #include "PTRACERS.h"  #include "PTRACERS.h"
# Line 53  C     KappaRTr   :: Net diffusivity for Line 55  C     KappaRTr   :: Net diffusivity for
55        _RL KappaRTr(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        _RL KappaRTr(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
56        INTEGER myThid        INTEGER myThid
57    
58    #ifdef ALLOW_GENERIC_ADVDIFF
59  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
60  C     == Local variables ==  C     == Local variables ==
61  C     i, j, k    :: Loop counters  C     i, j, k    :: Loop counters
62  C     iTr        :: passive tracer index  C     iTr        :: passive tracer index
63  C     msgBuf     :: message buffer  C     msgBuf     :: message buffer
64        INTEGER i,j,k        INTEGER i,j,k
65        INTEGER iTr        _RL KbryanLewis79, KbryanLewisEQ
       _RL KbryanLewis79  
66        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
67    #ifdef ALLOW_PTRACERS
68          INTEGER iTr
69    #endif
70  CEOP  CEOP
71    
72        IF ( trIdentity.EQ.GAD_TEMPERATURE) THEN        IF ( .NOT. trUseKPP ) THEN
   
73         DO k = 1,Nr         DO k = 1,Nr
74          KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)          KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
75       &  *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)       &       *(atan(-(rF(k)-diffKrBL79Ho)/diffKrBL79scl)/PI+0.5 _d 0)
76    #ifdef ALLOW_BL79_LAT_VARY
77            KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)
78         &       *(atan(-(rF(k)-diffKrBLEQHo)/diffKrBLEQscl)/PI+0.5 _d 0)
79    #endif
80          DO j = 1-Oly,sNy+Oly          DO j = 1-Oly,sNy+Oly
81           DO i = 1-Olx,sNx+Olx           DO i = 1-Olx,sNx+Olx
82            KappaRTr(i,j,k) =            KappaRTr(i,j,k) =
83       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
84  #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))       &         + KbryanLewis79
85       &       + diffKr(i,j,k,bi,bj)  #ifdef ALLOW_BL79_LAT_VARY
86  #else       &         + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)
      &       + diffKrNrT(k)  
87  #endif  #endif
      &       + KbryanLewis79  
88           ENDDO           ENDDO
89          ENDDO          ENDDO
90         ENDDO         ENDDO
91           IF ( trIdentity.EQ.GAD_TEMPERATURE ) THEN
92        ELSEIF ( trIdentity.EQ.GAD_SALINITY) THEN          DO k = 1,Nr
93             DO j = 1-Oly,sNy+Oly
94         DO k = 1,Nr            DO i = 1-Olx,sNx+Olx
95          KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)             KappaRTr(i,j,k) = KappaRTr(i,j,k)
96       &  *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)  #if (defined ALLOW_3D_DIFFKR || \
97          DO j = 1-Oly, sNy+Oly       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
98           DO i = 1-Olx, sNx+Olx       &          + diffKr(i,j,k,bi,bj)
           KappaRTr(i,j,k) =  
      &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa  
 #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))  
      &       + diffKr(i,j,k,bi,bj)  
99  #else  #else
100       &       + diffKrNrS(k)       &          + diffKrNrT(k)
101  #endif  #endif
102       &       + KbryanLewis79            ENDDO
103             ENDDO
104            ENDDO
105           ELSEIF ( trIdentity.EQ.GAD_SALINITY) THEN
106            DO k = 1,Nr
107             DO j = 1-Oly, sNy+Oly
108              DO i = 1-Olx, sNx+Olx
109               KappaRTr(i,j,k) = KappaRTr(i,j,k)
110    #if (defined ALLOW_3D_DIFFKR || \
111         (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
112         &          + diffKr(i,j,k,bi,bj)
113    #else
114         &          + diffKrNrS(k)
115    #endif
116              ENDDO
117           ENDDO           ENDDO
118          ENDDO          ENDDO
        ENDDO  
   
119  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
120        ELSEIF ( trIdentity.GE.GAD_TR1         ELSEIF ( trIdentity.GE.GAD_TR1
121       &   .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN       &   .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN
122    
123         iTr = trIdentity - GAD_TR1 + 1          iTr = trIdentity - GAD_TR1 + 1
124         DO k = 1,Nr          DO k = 1,Nr
125          KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)           DO j = 1-Oly, sNy+Oly
126       &  *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)            DO i = 1-Olx, sNx+Olx
127          DO j = 1-Oly, sNy+Oly             KappaRTr(i,j,k) = KappaRTr(i,j,k)
128           DO i = 1-Olx, sNx+Olx  #if (defined ALLOW_3D_DIFFKR || \
129            KappaRTr(i,j,k) =       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
130       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa       &          + diffKr(i,j,k,bi,bj)
 #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))  
      &       + diffKr(i,j,k,bi,bj)  
131  #else  #else
132       &       + PTRACERS_diffKrNr(k,iTr)       &          + PTRACERS_diffKrNr(k,iTr)
133  #endif  #endif
134       &       + KbryanLewis79            ENDDO
135           ENDDO           ENDDO
136          ENDDO          ENDDO
        ENDDO  
137  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
138           ELSE
       ELSE  
139          WRITE(msgBuf,'(A,I4)')          WRITE(msgBuf,'(A,I4)')
140       &      ' CALC_3D_DIFFUSIVITY: Invalid tracer Id: ',trIdentity       &       ' CALC_3D_DIFFUSIVITY: Invalid tracer Id: ',trIdentity
141          CALL PRINT_ERROR(msgBuf, myThid)          CALL PRINT_ERROR(msgBuf, myThid)
142          STOP 'ABNORMAL END: S/R CALC_3D_DIFFUSIVITY'          STOP 'ABNORMAL END: S/R CALC_3D_DIFFUSIVITY'
143           ENDIF
144        ENDIF        ENDIF
145    
146  C--   Add physical pacakge contributions:  C--   Add physical pacakge contributions:
147    
 #ifdef ALLOW_GMREDI  
       IF (trUseGMRedi) THEN  
          CALL GMREDI_CALC_DIFF(  
      I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,  
      U        KappaRTr,  
      I        myThid)  
       ENDIF  
 #endif  
   
148  #ifdef ALLOW_KPP  #ifdef ALLOW_KPP
149        IF (trUseKPP) THEN        IF (trUseKPP) THEN
150         IF (trIdentity.EQ.GAD_TEMPERATURE) THEN         IF (trIdentity.EQ.GAD_TEMPERATURE) THEN
# Line 156  C--   Add physical pacakge contributions Line 158  C--   Add physical pacakge contributions
158       U        KappaRTr,       U        KappaRTr,
159       I        myThid)       I        myThid)
160         ENDIF         ENDIF
161    #if (defined ALLOW_PTRACERS && ! (defined ALLOW_3D_DIFFKR || \
162         (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))))
163           IF ( trIdentity.GE.GAD_TR1
164         &   .AND. trIdentity.LT.GAD_TR1+PTRACERS_numInUse) THEN
165            iTr = trIdentity - GAD_TR1 + 1
166            DO k = 1,Nr
167             DO j = 1-Oly, sNy+Oly
168              DO i = 1-Olx, sNx+Olx
169               KappaRTr(i,j,k) = KappaRTr(i,j,k)
170         &          - diffKrNrS(k) + PTRACERS_diffKrNr(k,iTr)
171              ENDDO
172             ENDDO
173            ENDDO
174           ENDIF
175    #endif
176          ENDIF
177    #endif /* ALLOW_KPP */
178    
179    #ifdef ALLOW_GMREDI
180          IF (trUseGMRedi) THEN
181             CALL GMREDI_CALC_DIFF(
182         I        bi,bj,iMin,iMax,jMin,jMax,0,Nr,
183         U        KappaRTr,
184         I        myThid)
185        ENDIF        ENDIF
186  #endif  #endif
187    
# Line 195  c       KappaRTr(i,j,k) = maskUp(i,j)*Ka Line 221  c       KappaRTr(i,j,k) = maskUp(i,j)*Ka
221  c      ENDDO  c      ENDDO
222  c     ENDDO  c     ENDDO
223    
224    #endif /* ALLOW_GENERIC_ADVDIFF */
225    
226        RETURN        RETURN
227        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22