Back to home page

MITgcm

 
 

    


File indexing completed on 2021-02-17 06:11:33 UTC

view on githubraw file Latest commit 2d5bb917 on 2020-09-13 20:55:43 UTC
31566b6684 Alis*0001 #include "GAD_OPTIONS.h"
                0002 
aba3ddc7b7 Alis*0003 CBOP
                0004 C !ROUTINE: GAD_DIFF_X
                0005 
                0006 C !INTERFACE: ==========================================================
eaba2fd266 Jean*0007       SUBROUTINE GAD_DIFF_X(
31566b6684 Alis*0008      I           bi,bj,k,
                0009      I           xA, diffKh,
                0010      I           tracer,
                0011      O           dfx,
                0012      I           myThid )
                0013 
aba3ddc7b7 Alis*0014 C !DESCRIPTION:
527a84022c Alis*0015 C Calculates the area integrated zonal flux due to down-gradient diffusion
                0016 C of a tracer:
aba3ddc7b7 Alis*0017 C \begin{equation*}
527a84022c Alis*0018 C F^x_{diff} = - A^x \kappa_h \frac{1}{\Delta x_c} \delta_i \theta
aba3ddc7b7 Alis*0019 C \end{equation*}
                0020 
                0021 C !USES: ===============================================================
                0022       IMPLICIT NONE
31566b6684 Alis*0023 #include "SIZE.h"
                0024 #include "GRID.h"
2d5bb917cc Jean*0025 #ifdef ALLOW_SMAG_3D_DIFFUSIVITY
                0026 # include "EEPARAMS.h"
                0027 # include "PARAMS.h"
                0028 # include "DYNVARS.h"
                0029 #endif
31566b6684 Alis*0030 
aba3ddc7b7 Alis*0031 C !INPUT PARAMETERS: ===================================================
                0032 C  bi,bj                :: tile indices
                0033 C  k                    :: vertical level
                0034 C  xA                   :: area of face at U points
                0035 C  diffKh               :: horizontal diffusivity
                0036 C  tracer               :: tracer field
                0037 C  myThid               :: thread number
31566b6684 Alis*0038       INTEGER bi,bj,k
                0039       _RS xA    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0040       _RL diffKh
                0041       _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0042       INTEGER myThid
                0043 
aba3ddc7b7 Alis*0044 C !OUTPUT PARAMETERS: ==================================================
                0045 C  dfx                  :: zonal diffusive flux
                0046       _RL dfx   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0047 
                0048 C !LOCAL VARIABLES: ====================================================
                0049 C  i,j                  :: loop indices
31566b6684 Alis*0050       INTEGER i,j
aba3ddc7b7 Alis*0051 CEOP
31566b6684 Alis*0052 
2d5bb917cc Jean*0053 #ifdef ALLOW_SMAG_3D_DIFFUSIVITY
                0054       IF ( smag3D_diffCoeff.GT.zeroRL ) THEN
                0055         DO j=1-OLy,sNy+OLy
                0056          dfx(1-OLx,j) = 0.
                0057          DO i=1-OLx+1,sNx+OLx
                0058           dfx(i,j) = -( diffKh
                0059      &                + halfRL*( smag3D_diffK(i-1,j,k,bi,bj)
                0060      &                         + smag3D_diffK( i, j,k,bi,bj) )
                0061      &                )*xA(i,j)
                0062      &             *_recip_dxC(i,j,bi,bj)*recip_deepFacC(k)
                0063      &             *( tracer(i,j) - tracer(i-1,j) )
                0064      &             *cosFacU(j,bi,bj)
                0065          ENDDO
                0066         ENDDO
                0067       ELSE
                0068 #endif /* ALLOW_SMAG_3D_DIFFUSIVITY */
                0069         DO j=1-OLy,sNy+OLy
                0070          dfx(1-OLx,j) = 0.
                0071          DO i=1-OLx+1,sNx+OLx
                0072           dfx(i,j) = -diffKh*xA(i,j)
                0073      &             *_recip_dxC(i,j,bi,bj)*recip_deepFacC(k)
                0074      &             *( tracer(i,j) - tracer(i-1,j) )
                0075      &             *cosFacU(j,bi,bj)
                0076          ENDDO
                0077         ENDDO
                0078 #ifdef ALLOW_SMAG_3D_DIFFUSIVITY
                0079       ENDIF
                0080 #endif /* ALLOW_SMAG_3D_DIFFUSIVITY */
31566b6684 Alis*0081 
                0082       RETURN
                0083       END