/[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.9 by dimitri, Sat Apr 14 18:32:32 2007 UTC revision 1.10 by dimitri, Mon Apr 23 20:46:49 2007 UTC
# Line 69  C     msgBuf     :: message buffer Line 69  C     msgBuf     :: message buffer
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  #ifdef ALLOW_BL79_LAT_VARY
77          KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)          KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)
78       &   *( atan( -( rF(k)-diffKrBLEQHo )/diffKrBLEQscl )/PI+0.5 _d 0)       &       *(atan(-(rF(k)-diffKrBLEQHo)/diffKrBLEQscl)/PI+0.5 _d 0)
79  #endif  #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_3D_DIFFKR || \       &         + KbryanLewis79
      (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))  
      &       + diffKr(i,j,k,bi,bj)  
 #else  
      &       + diffKrNrT(k)  
 #endif  
      &       + KbryanLewis79  
85  #ifdef ALLOW_BL79_LAT_VARY  #ifdef ALLOW_BL79_LAT_VARY
86       &       + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)       &         + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)
87  #endif  #endif
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)
      &   *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)  
 #ifdef ALLOW_BL79_LAT_VARY  
         KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)  
      &   *( atan( -( rF(k)-diffKrBLEQHo )/diffKrBLEQscl )/PI+0.5 _d 0)  
 #endif  
         DO j = 1-Oly, sNy+Oly  
          DO i = 1-Olx, sNx+Olx  
           KappaRTr(i,j,k) =  
      &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa  
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       &       + diffKrNrS(k)       &          + diffKrNrT(k)
101  #endif  #endif
102       &       + KbryanLewis79            ENDDO
103  #ifdef ALLOW_BL79_LAT_VARY           ENDDO
104       &       + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)          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  #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  #ifdef ALLOW_BL79_LAT_VARY             KappaRTr(i,j,k) = KappaRTr(i,j,k)
         KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)  
      &   *( atan( -( rF(k)-diffKrBLEQHo )/diffKrBLEQscl )/PI+0.5 _d 0)  
 #endif  
         DO j = 1-Oly, sNy+Oly  
          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)
 #endif  
      &       + KbryanLewis79  
 #ifdef ALLOW_BL79_LAT_VARY  
      &       + (KbryanLewisEQ-KbryanLewis79)*BL79LatArray(i,j,bi,bj)  
133  #endif  #endif
134              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 185  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.9  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22