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

Annotation of /MITgcm/pkg/shap_filt/shap_filt_u.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_u.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_U(uVel,bi,bj,K,myCurrentTime,myThid)
7     C /==========================================================\
8     C | S/R SHAP_FILT_U |
9     C | Applies Shapiro filter to U 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 uVel(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     DO J=1-OLy,sNy+OLy
35     DO I=1-OLx,sNx+OLx
36     tmpFldX(i,j,1) = uVel(i,j,k,bi,bj)
37     & *_maskW(i,j,k,bi,bj)
38     ENDDO
39     ENDDO
40    
41     C Extract small-scale noise from tmpFldX (delta_ii^n)
42     DO N=1,nShap
43     N1=1+mod(N+1,2)
44     N2=1+mod( N ,2)
45     DO J=1-OLy,sNy+OLy
46     DO I=1-OLx+1,sNx+OLx-1
47     tmpFldX(i,j,N2) = -0.25*(
48     & tmpFldX(i-1,j,N1) + tmpFldX(i+1,j,N1)
49     & - 2.*tmpFldX(i,j,N1)
50     & )*_maskW(i,j,k,bi,bj)
51     ENDDO
52     ENDDO
53     ENDDO
54    
55     C Create temporary Zeta mask (accounting for thin walls)
56     DO J=1-OLy,sNy+OLy
57     DO I=1-OLx+1,sNx+OLx
58     maskZ(i,j) = _maskS(i-1,j,k,bi,bj)
59     & *_maskS( i ,j,k,bi,bj)
60     ENDDO
61     ENDDO
62    
63     #ifdef SEQUENTIAL_2D_SHAP
64     DO J=1-OLy,sNy+OLy
65     DO I=1-OLx,sNx+OLx
66     tmpFldX(i,j,N2) = uVel(i,j,k,bi,bj) - tmpFldX(i,j,N2)
67     tmpFldY(i,j,1) = tmpFldX(i,j,N2)
68     ENDDO
69     ENDDO
70     #else
71     DO J=1-OLy,sNy+OLy
72     DO I=1-OLx,sNx+OLx
73     tmpFldY(i,j,1) = uVel(i,j,k,bi,bj)
74     & *_maskW(i,j,k,bi,bj)
75     ENDDO
76     ENDDO
77     #endif /* SEQUENTIAL_2D_SHAP */
78    
79     C Extract small-scale noise from tmpFldY (delta_jj^n)
80     DO N=1,nShap
81     N1=1+mod(N+1,2)
82     N2=1+mod( N ,2)
83     DO J=1-OLy+1,sNy+OLy-1
84     DO I=1-OLx+1,sNx+OLx
85     tmpFldY(i,j,N2) = -0.25*(
86     & (tmpFldY(i,j+1,N1)-tmpFldY(i, j ,N1))*maskZ(i,j+1)
87     & -(tmpFldY(i, j ,N1)-tmpFldY(i,j-1,N1))*maskZ(i, j )
88     #ifdef NO_SLIP_SHAP
89     & -2.*(2.-maskZ(i,j)-maskZ(i,j+1))*tmpFldY(i,j,N1)
90     #endif
91     & )*_maskW(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     uVel(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     uVel(i,j,k,bi,bj) = uVel(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