/[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.7 by dimitri, Wed Apr 11 00:00:47 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, KbryanLewisHL, 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 ( trIdentity.EQ.GAD_TEMPERATURE) THEN
73    
74         DO k = 1,Nr         DO k = 1,Nr
75          KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)          KbryanLewisHL=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
76       &  *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)       &   *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)
77            KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)
78         &   *( atan( -( rF(k)-diffKrBLEQHo )/diffKrBLEQscl )/PI+0.5 _d 0)
79          DO j = 1-Oly,sNy+Oly          DO j = 1-Oly,sNy+Oly
80             IF ( abs(YC(i,j,bi,bj)) .GT. KbryanLewisLatTransition ) THEN
81              KbryanLewis79 = KbryanLewisHL
82             ELSE
83              KbryanLewis79 = KbryanLewisHL-(KbryanLewisHL-KbryanLewisEQ)*
84         &         (1+cos(YC(i,j,bi,bj)*pi/KbryanLewisLatTransition)) / 2
85             ENDIF
86           DO i = 1-Olx,sNx+Olx           DO i = 1-Olx,sNx+Olx
87            KappaRTr(i,j,k) =            KappaRTr(i,j,k) =
88       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
89  #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))  #if (defined ALLOW_3D_DIFFKR || \
90         (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
91       &       + diffKr(i,j,k,bi,bj)       &       + diffKr(i,j,k,bi,bj)
92  #else  #else
93       &       + diffKrNrT(k)       &       + diffKrNrT(k)
# Line 86  CEOP Line 100  CEOP
100        ELSEIF ( trIdentity.EQ.GAD_SALINITY) THEN        ELSEIF ( trIdentity.EQ.GAD_SALINITY) THEN
101    
102         DO k = 1,Nr         DO k = 1,Nr
103          KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)          KbryanLewisHL=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
104       &  *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)       &   *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)
105            KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)
106         &   *( atan( -( rF(k)-diffKrBLEQHo )/diffKrBLEQscl )/PI+0.5 _d 0)
107          DO j = 1-Oly, sNy+Oly          DO j = 1-Oly, sNy+Oly
108             IF ( abs(YC(i,j,bi,bj)) .GT. KbryanLewisLatTransition ) THEN
109              KbryanLewis79 = KbryanLewisHL
110             ELSE
111              KbryanLewis79 = KbryanLewisHL-(KbryanLewisHL-KbryanLewisEQ)*
112         &         (1+cos(YC(i,j,bi,bj)*pi/KbryanLewisLatTransition)) / 2
113             ENDIF
114           DO i = 1-Olx, sNx+Olx           DO i = 1-Olx, sNx+Olx
115            KappaRTr(i,j,k) =            KappaRTr(i,j,k) =
116       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
117  #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))  #if (defined ALLOW_3D_DIFFKR || \
118         (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
119       &       + diffKr(i,j,k,bi,bj)       &       + diffKr(i,j,k,bi,bj)
120  #else  #else
121       &       + diffKrNrS(k)       &       + diffKrNrS(k)
# Line 108  CEOP Line 131  CEOP
131    
132         iTr = trIdentity - GAD_TR1 + 1         iTr = trIdentity - GAD_TR1 + 1
133         DO k = 1,Nr         DO k = 1,Nr
134          KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)          KbryanLewisHL=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
135       &  *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)       &   *( atan( -( rF(k)-diffKrBL79Ho )/diffKrBL79scl )/PI+0.5 _d 0)
136            KbryanLewisEQ=diffKrBLEQsurf+(diffKrBLEQdeep-diffKrBLEQsurf)
137         &   *( atan( -( rF(k)-diffKrBLEQHo )/diffKrBLEQscl )/PI+0.5 _d 0)
138          DO j = 1-Oly, sNy+Oly          DO j = 1-Oly, sNy+Oly
139             IF ( abs(YC(i,j,bi,bj)) .GT. KbryanLewisLatTransition ) THEN
140              KbryanLewis79 = KbryanLewisHL
141             ELSE
142              KbryanLewis79 = KbryanLewisHL-(KbryanLewisHL-KbryanLewisEQ)*
143         &         (1+cos(YC(i,j,bi,bj)*pi/KbryanLewisLatTransition)) / 2
144             ENDIF
145           DO i = 1-Olx, sNx+Olx           DO i = 1-Olx, sNx+Olx
146            KappaRTr(i,j,k) =            KappaRTr(i,j,k) =
147       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa       &         IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
148  #if (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL))  #if (defined ALLOW_3D_DIFFKR || \
149         (defined (ALLOW_AUTODIFF_TAMC) && defined (ALLOW_DIFFKR_CONTROL)))
150       &       + diffKr(i,j,k,bi,bj)       &       + diffKr(i,j,k,bi,bj)
151  #else  #else
152       &       + PTRACERS_diffKrNr(k,iTr)       &       + PTRACERS_diffKrNr(k,iTr)
# Line 195  c       KappaRTr(i,j,k) = maskUp(i,j)*Ka Line 227  c       KappaRTr(i,j,k) = maskUp(i,j)*Ka
227  c      ENDDO  c      ENDDO
228  c     ENDDO  c     ENDDO
229    
230    #endif /* ALLOW_GENERIC_ADVDIFF */
231    
232        RETURN        RETURN
233        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22