/[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.8 by jmc, Wed Apr 11 15:05:58 2007 UTC revision 1.10 by dimitri, Mon Apr 23 20:46:49 2007 UTC
# Line 62  C     i, j, k    :: Loop counters Line 62  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        _RL KbryanLewis79        _RL KbryanLewis79, KbryanLewisEQ
66        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
67  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
68        INTEGER iTr        INTEGER iTr
69  #endif  #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         &         + KbryanLewis79
85    #ifdef ALLOW_BL79_LAT_VARY
86         &         + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)
87    #endif
88             ENDDO
89            ENDDO
90           ENDDO
91           IF ( trIdentity.EQ.GAD_TEMPERATURE ) THEN
92            DO k = 1,Nr
93             DO j = 1-Oly,sNy+Oly
94              DO i = 1-Olx,sNx+Olx
95               KappaRTr(i,j,k) = KappaRTr(i,j,k)
96  #if (defined ALLOW_3D_DIFFKR || \  #if (defined ALLOW_3D_DIFFKR || \
97       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
98       &       + diffKr(i,j,k,bi,bj)       &          + diffKr(i,j,k,bi,bj)
99  #else  #else
100       &       + diffKrNrT(k)       &          + diffKrNrT(k)
101  #endif  #endif
102       &       + KbryanLewis79            ENDDO
103           ENDDO           ENDDO
104          ENDDO          ENDDO
105         ENDDO         ELSEIF ( trIdentity.EQ.GAD_SALINITY) THEN
106            DO k = 1,Nr
107        ELSEIF ( trIdentity.EQ.GAD_SALINITY) THEN           DO j = 1-Oly, sNy+Oly
108              DO i = 1-Olx, sNx+Olx
109         DO k = 1,Nr             KappaRTr(i,j,k) = KappaRTr(i,j,k)
         KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)  
      &  *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)  
         DO j = 1-Oly, sNy+Oly  
          DO i = 1-Olx, sNx+Olx  
           KappaRTr(i,j,k) =  
      &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa  
110  #if (defined ALLOW_3D_DIFFKR || \  #if (defined ALLOW_3D_DIFFKR || \
111       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
112       &       + diffKr(i,j,k,bi,bj)       &          + diffKr(i,j,k,bi,bj)
113  #else  #else
114       &       + diffKrNrS(k)       &          + diffKrNrS(k)
115  #endif  #endif
116       &       + KbryanLewis79            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)
          DO i = 1-Olx, sNx+Olx  
           KappaRTr(i,j,k) =  
      &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa  
128  #if (defined ALLOW_3D_DIFFKR || \  #if (defined ALLOW_3D_DIFFKR || \
129       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))       (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
130       &       + diffKr(i,j,k,bi,bj)       &          + 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 164  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    

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

  ViewVC Help
Powered by ViewVC 1.1.22