File indexing completed on 2024-12-17 18:38:47 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
42c525bfb4 Alis*0001 #include "SHAP_FILT_OPTIONS.h"
0002
0003 SUBROUTINE SHAP_FILT_V( vVel,bi,bj,K,myCurrentTime,myThid )
0004
0005
0006
0007
0008
0009 IMPLICIT NONE
0010
0011
0012 #include "SIZE.h"
0013 #include "EEPARAMS.h"
0014 #include "PARAMS.h"
0015 #include "GRID.h"
aea29c8517 Alis*0016 #include "SHAP_FILT.h"
42c525bfb4 Alis*0017
0018
0019 _RL vVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
0020 INTEGER myThid
0021 _RL myCurrentTime
0022 INTEGER bi, bj, K
0023
0024 #ifdef ALLOW_SHAP_FILT
0025
0026
0027 _RL tmpFldX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
0028 _RL tmpFldY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
0029 _RS maskZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0030 INTEGER I,J,N,N1,N2
0031
0032
0033 DO J=1-OLy+1,sNy+OLy
0034 DO I=1-OLx,sNx+OLx
0035 maskZ(i,j) = _maskW(i,j-1,k,bi,bj)
0036 & *_maskW(i, j ,k,bi,bj)
0037 ENDDO
0038 ENDDO
0039
0040 DO J=1-OLy,sNy+OLy
0041 DO I=1-OLx,sNx+OLx
0042 tmpFldX(i,j,1) = vVel(i,j,k,bi,bj)
0043 & *_maskS(i,j,k,bi,bj)
0044 ENDDO
0045 ENDDO
0046
0047
aea29c8517 Alis*0048 DO N=1,nShapUV
42c525bfb4 Alis*0049 N1=1+mod(N+1,2)
0050 N2=1+mod( N ,2)
0051 DO J=1-OLy+1,sNy+OLy
0052 DO I=1-OLx+1,sNx+OLx-1
0053 tmpFldX(i,j,N2) = -0.25*(
0054 & (tmpFldX(i+1,j,N1)-tmpFldX( i ,j,N1))*maskZ(i+1,j)
0055 & -(tmpFldX( i ,j,N1)-tmpFldX(i-1,j,N1))*maskZ( i ,j)
0056 #ifdef NO_SLIP_SHAP
0057 & -2.*(2.-maskZ(i,j)-maskZ(i+1,j))*tmpFldX(i,j,N1)
0058 #endif
0059 & )*_maskS(i,j,k,bi,bj)
0060 ENDDO
0061 ENDDO
0062 ENDDO
0063
0064 #ifdef SEQUENTIAL_2D_SHAP
0065 DO J=1-OLy,sNy+OLy
0066 DO I=1-OLx,sNx+OLx
0067 tmpFldX(i,j,N2) = vVel(i,j,k,bi,bj) - tmpFldX(i,j,N2)
0068 tmpFldY(i,j,1) = tmpFldX(i,j,N2)
0069 ENDDO
0070 ENDDO
0071 #else
0072 DO J=1-OLy,sNy+OLy
0073 DO I=1-OLx,sNx+OLx
0074 tmpFldY(i,j,1) = vVel(i,j,k,bi,bj)
0075 & *_maskS(i,j,k,bi,bj)
0076 ENDDO
0077 ENDDO
0078 #endif /* SEQUENTIAL_2D_SHAP */
0079
0080
aea29c8517 Alis*0081 DO N=1,nShapUV
42c525bfb4 Alis*0082 N1=1+mod(N+1,2)
0083 N2=1+mod( N ,2)
0084 DO J=1-OLy+1,sNy+OLy-1
0085 DO I=1-OLx,sNx+OLx
0086 tmpFldY(i,j,N2) = -0.25*(
0087 & tmpFldY(i,j-1,N1) + tmpFldY(i,j+1,N1)
0088 & - 2.*tmpFldY(i,j,N1)
0089 & )*_maskS(i,j,k,bi,bj)
0090 ENDDO
0091 ENDDO
0092 ENDDO
0093
0094
0095 #ifdef SEQUENTIAL_2D_SHAP
0096 DO J=1-OLy,sNy+OLy
0097 DO I=1-OLx,sNx+OLx
0098 vVel(i,j,k,bi,bj) = tmpFldX(i,j,N2) - tmpFldY(i,j,N2)
0099 ENDDO
0100 ENDDO
0101 #else
0102 DO J=1-OLy,sNy+OLy
0103 DO I=1-OLx,sNx+OLx
0104 vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)
0105 & -0.5*( tmpFldX(i,j,N2)+tmpFldY(i,j,N2) )
0106 ENDDO
0107 ENDDO
0108 #endif /* SEQUENTIAL_2D_SHAP */
0109
0110 #endif /* ALLOW_SHAP_FILT */
0111
0112 RETURN
0113 END