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

Contents 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 - (show 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 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
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