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_Y
                0005 
                0006 C !INTERFACE: ==========================================================
eaba2fd266 Jean*0007       SUBROUTINE GAD_DIFF_Y(
31566b6684 Alis*0008      I           bi,bj,k,
                0009      I           yA, diffKh,
                0010      I           tracer,
                0011      O           dfy,
                0012      I           myThid )
                0013 
aba3ddc7b7 Alis*0014 C !DESCRIPTION:
527a84022c Alis*0015 C Calculates the area integrated meridional flux due to down-gradient
                0016 C diffusion of a tracer:
aba3ddc7b7 Alis*0017 C \begin{equation*}
527a84022c Alis*0018 C F^y_{diff} = - A^y \kappa_h \frac{1}{\Delta y_c} \delta_j \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  yA                   :: area of face at V 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 yA    (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                  :: meridional diffusive flux
                0046       _RL dfy   (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       DO i=1-OLx,sNx+OLx
                0054        dfy(i,1-OLy) = 0.
31566b6684 Alis*0055       ENDDO
2d5bb917cc Jean*0056 #ifdef ALLOW_SMAG_3D_DIFFUSIVITY
                0057       IF ( smag3D_diffCoeff.GT.zeroRL ) THEN
                0058         DO j=1-OLy+1,sNy+OLy
                0059          DO i=1-OLx,sNx+OLx
                0060           dfy(i,j) = -( diffKh
                0061      &                + halfRL*( smag3D_diffK(i,j-1,k,bi,bj)
                0062      &                         + smag3D_diffK(i, j, k,bi,bj) )
                0063      &                )*yA(i,j)
                0064      &             *_recip_dyC(i,j,bi,bj)*recip_deepFacC(k)
                0065      &             *( tracer(i,j) - tracer(i,j-1) )
31566b6684 Alis*0066 #ifdef ISOTROPIC_COS_SCALING
2d5bb917cc Jean*0067      &             *cosFacV(j,bi,bj)
31566b6684 Alis*0068 #endif
2d5bb917cc Jean*0069          ENDDO
                0070         ENDDO
                0071       ELSE
                0072 #endif /* ALLOW_SMAG_3D_DIFFUSIVITY */
                0073         DO j=1-OLy+1,sNy+OLy
                0074          DO i=1-OLx,sNx+OLx
                0075           dfy(i,j) = -diffKh*yA(i,j)
                0076      &             *_recip_dyC(i,j,bi,bj)*recip_deepFacC(k)
                0077      &             *( tracer(i,j) - tracer(i,j-1) )
                0078 #ifdef ISOTROPIC_COS_SCALING
                0079      &             *cosFacV(j,bi,bj)
                0080 #endif
                0081          ENDDO
                0082         ENDDO
                0083 #ifdef ALLOW_SMAG_3D_DIFFUSIVITY
                0084       ENDIF
                0085 #endif /* ALLOW_SMAG_3D_DIFFUSIVITY */
31566b6684 Alis*0086 
                0087       RETURN
                0088       END