File indexing completed on 2018-03-02 18:42:09 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
af960ebfb4 Jean*0001 #include "MOM_COMMON_OPTIONS.h"
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE MOM_UV_SMAG_3D(
0009 I str11, str22, str12, str13, str23,
0010 I viscAh3d_00, viscAh3d_12,
0011 I viscAh3d_13, viscAh3d_23,
0012
0013 O uDissip, vDissip,
0014 I iMin,iMax,jMin,jMax, k, bi, bj, myThid )
0015
0016
0017
0018
0019 IMPLICIT NONE
0020
0021
0022 #include "SIZE.h"
0023 #include "EEPARAMS.h"
0024 #include "GRID.h"
0025 #include "PARAMS.h"
0026
0027
0028
0029
0030 _RL str11(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0031 _RL str22(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0032 _RL str12(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0033 _RL str13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
0034 _RL str23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
0035
0036 _RL viscAh3d_00(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0037 _RL viscAh3d_12(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0038 _RL viscAh3d_13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
0039 _RL viscAh3d_23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
0040 INTEGER iMin,iMax, jMin,jMax
0041 INTEGER k, bi, bj
0042 INTEGER myThid
0043
0044
0045 _RL uDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0046 _RL vDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0047
0048
245cf5c24c Jean*0049 #ifdef ALLOW_SMAG_3D
af960ebfb4 Jean*0050
0051 INTEGER i,j
0052 INTEGER km1, kp1
0053 _RL maskM1, maskP1
0054
0055 km1 = MAX( 1,k-1)
0056 kp1 = MIN(Nr,k+1)
0057 maskM1 = 1.
0058 maskP1 = 1.
0059 IF ( k.LE.1 ) maskM1 = 0.
0060 IF ( k.GE.Nr ) maskP1 = 0.
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 DO j= jMin,jMax
0071 DO i= iMin,iMax
0072 uDissip(i,j) = recip_rAw(i,j,bi,bj)*(
0073 & ( viscAh3d_00( i , j , k )*str11( i , j , k )
0074 & *dyF( i , j ,bi,bj)
0075 & -viscAh3d_00(i-1, j , k )*str11(i-1, j , k )
0076 & *dyF(i-1, j ,bi,bj)
0077 & )
0078 & +( viscAh3d_12( i ,j+1, k )*str12( i ,j+1, k )
0079 & *dxV( i ,j+1,bi,bj)
0080 & -viscAh3d_12( i , j , k )*str12( i , j , k )
0081 & *dxV( i , j ,bi,bj)
0082 & ) )
0083 & + recip_drF( k )
0084 & *( viscAh3d_13( i , j ,k+1)*str13( i , j ,k+1)
0085
0086 & -viscAh3d_13( i , j , k )*str13( i , j , k )
0087
0088 & )*rkSign*recip_hFacW(i,j,k,bi,bj)
0089 ENDDO
0090 ENDDO
0091
0092 DO j= jMin,jMax
0093 DO i= iMin,iMax
0094 vDissip(i,j) = recip_rAs(i,j,bi,bj)*(
0095 & ( viscAh3d_12(i+1, j , k )*str12(i+1, j ,k)
0096 & *dyU(i+1, j ,bi,bj)
0097 & -viscAh3d_12( i , j , k )*str12( i , j ,k)
0098 & *dyU( i , j ,bi,bj)
0099 & )
0100 & +( viscAh3d_00( i , j , k )*str22( i , j ,k)
0101 & *dxF( i , j ,bi,bj)
0102 & -viscAh3d_00( i ,j-1, k )*str22( i ,j-1,k)
0103 & *dxF( i ,j-1,bi,bj)
0104 & ) )
0105 & + recip_drF( k )
0106 & *( viscAh3d_23( i , j ,k+1)*str23( i , j ,k+1)
0107
0108 & -viscAh3d_23( i , j , k )*str23( i , j , k )
0109
0110 & )*rkSign*recip_hFacS(i,j,k,bi,bj)
0111
0112 ENDDO
0113 ENDDO
0114
0115
0116
0117
0118
0119
0120
245cf5c24c Jean*0121 #endif /* ALLOW_SMAG_3D */
af960ebfb4 Jean*0122 RETURN
0123 END