/[MITgcm]/MITgcm/pkg/shap_filt/shap_filt_v.F
ViewVC logotype

Annotation of /MITgcm/pkg/shap_filt/shap_filt_v.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (hide annotations) (download)
Sun Feb 4 14:38:50 2001 UTC (23 years, 4 months ago) by cnh
Branch: MAIN
CVS Tags: checkpoint38, pre38tag1, c37_adj, checkpoint39, checkpoint37, checkpoint36, checkpoint35
Branch point for: pre38
Changes since 1.2: +2 -1 lines
Made sure each .F and .h file had
the CVS keywords Header and Name at its start.
Most had header but very few currently have Name, so
lots of changes!

1 cnh 1.3 C $Header: /u/gcmpack/models/MITgcmUV/pkg/shap_filt/shap_filt_v.F,v 1.2 2001/02/02 21:36:30 adcroft Exp $
2     C $Name: $
3 adcroft 1.2
4     #include "SHAP_FILT_OPTIONS.h"
5    
6     SUBROUTINE SHAP_FILT_V( vVel,bi,bj,K,myCurrentTime,myThid )
7     C /==========================================================\
8     C | S/R SHAP_FILT_V |
9     C | Applies Shapiro filter to V field over one XY slice |
10     C | of one tile at a time. |
11     C \==========================================================/
12     IMPLICIT NONE
13    
14     C == Global variables ===
15     #include "SIZE.h"
16     #include "EEPARAMS.h"
17     #include "PARAMS.h"
18     #include "GRID.h"
19    
20     C == Routine arguments
21     _RL vVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
22     INTEGER myThid
23     _RL myCurrentTime
24     INTEGER bi, bj, K
25    
26     #ifdef ALLOW_SHAP_FILT
27    
28     C == Local variables ==
29     _RL tmpFldX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
30     _RL tmpFldY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
31     _RS maskZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
32     INTEGER I,J,N,N1,N2
33    
34     C Create temporary Zeta mask (accounting for thin walls)
35     DO J=1-OLy+1,sNy+OLy
36     DO I=1-OLx,sNx+OLx
37     maskZ(i,j) = _maskW(i,j-1,k,bi,bj)
38     & *_maskW(i, j ,k,bi,bj)
39     ENDDO
40     ENDDO
41    
42     DO J=1-OLy,sNy+OLy
43     DO I=1-OLx,sNx+OLx
44     tmpFldX(i,j,1) = vVel(i,j,k,bi,bj)
45     & *_maskS(i,j,k,bi,bj)
46     ENDDO
47     ENDDO
48    
49     C Extract small-scale noise from tmpFldX (delta_ii^n)
50     DO N=1,nShap
51     N1=1+mod(N+1,2)
52     N2=1+mod( N ,2)
53     DO J=1-OLy+1,sNy+OLy
54     DO I=1-OLx+1,sNx+OLx-1
55     tmpFldX(i,j,N2) = -0.25*(
56     & (tmpFldX(i+1,j,N1)-tmpFldX( i ,j,N1))*maskZ(i+1,j)
57     & -(tmpFldX( i ,j,N1)-tmpFldX(i-1,j,N1))*maskZ( i ,j)
58     #ifdef NO_SLIP_SHAP
59     & -2.*(2.-maskZ(i,j)-maskZ(i+1,j))*tmpFldX(i,j,N1)
60     #endif
61     & )*_maskS(i,j,k,bi,bj)
62     ENDDO
63     ENDDO
64     ENDDO
65    
66     #ifdef SEQUENTIAL_2D_SHAP
67     DO J=1-OLy,sNy+OLy
68     DO I=1-OLx,sNx+OLx
69     tmpFldX(i,j,N2) = vVel(i,j,k,bi,bj) - tmpFldX(i,j,N2)
70     tmpFldY(i,j,1) = tmpFldX(i,j,N2)
71     ENDDO
72     ENDDO
73     #else
74     DO J=1-OLy,sNy+OLy
75     DO I=1-OLx,sNx+OLx
76     tmpFldY(i,j,1) = vVel(i,j,k,bi,bj)
77     & *_maskS(i,j,k,bi,bj)
78     ENDDO
79     ENDDO
80     #endif /* SEQUENTIAL_2D_SHAP */
81    
82     C Extract small-scale noise from tmpFldY (delta_jj^n)
83     DO N=1,nShap
84     N1=1+mod(N+1,2)
85     N2=1+mod( N ,2)
86     DO J=1-OLy+1,sNy+OLy-1
87     DO I=1-OLx,sNx+OLx
88     tmpFldY(i,j,N2) = -0.25*(
89     & tmpFldY(i,j-1,N1) + tmpFldY(i,j+1,N1)
90     & - 2.*tmpFldY(i,j,N1)
91     & )*_maskS(i,j,k,bi,bj)
92     ENDDO
93     ENDDO
94     ENDDO
95    
96     C Subtract small-scale noise from field
97     #ifdef SEQUENTIAL_2D_SHAP
98     DO J=1-OLy,sNy+OLy
99     DO I=1-OLx,sNx+OLx
100     vVel(i,j,k,bi,bj) = tmpFldX(i,j,N2) - tmpFldY(i,j,N2)
101     ENDDO
102     ENDDO
103     #else
104     DO J=1-OLy,sNy+OLy
105     DO I=1-OLx,sNx+OLx
106     vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)
107     & -0.5*( tmpFldX(i,j,N2)+tmpFldY(i,j,N2) )
108     ENDDO
109     ENDDO
110     #endif /* SEQUENTIAL_2D_SHAP */
111    
112     #endif /* ALLOW_SHAP_FILT */
113    
114     RETURN
115     END

  ViewVC Help
Powered by ViewVC 1.1.22