/[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.2 - (hide annotations) (download)
Fri Feb 2 21:36:30 2001 UTC (23 years, 3 months ago) by adcroft
Branch: MAIN
Changes since 1.1: +114 -0 lines
Merged changes from branch "branch-atmos-merge" into MAIN (checkpoint34)
 - substantial modifications to algorithm sequence (dynamics.F)
 - packaged OBCS, Shapiro filter, Zonal filter, Atmospheric Physics

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

  ViewVC Help
Powered by ViewVC 1.1.22