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

Contents of /MITgcm/pkg/shap_filt/shap_filt_apply_uv.F

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


Revision 1.8 - (show annotations) (download)
Tue Aug 29 17:03:16 2006 UTC (17 years, 9 months ago) by dfer
Branch: MAIN
CVS Tags: checkpoint59, checkpoint58y_post, checkpoint58t_post, checkpoint60, checkpoint61, checkpoint58w_post, checkpoint58p_post, checkpoint58q_post, checkpoint58r_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint58v_post, checkpoint58x_post, checkpoint59j, checkpoint58u_post, checkpoint58s_post, checkpoint61b, checkpoint61c, checkpoint61a
Changes since 1.7: +34 -1 lines
add diagnostics of KE tendency due to Shapiro filter

1 C $Header: /u/gcmpack/MITgcm/pkg/shap_filt/shap_filt_apply_uv.F,v 1.7 2005/09/27 22:11:06 jmc Exp $
2 C $Name: $
3
4 #include "SHAP_FILT_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: SHAP_FILT_APPLY_UV
8 C !INTERFACE:
9 SUBROUTINE SHAP_FILT_APPLY_UV(
10 U uFld, vFld,
11 I myTime, myIter, myThid )
12
13 C !DESCRIPTION: \bv
14 C *==========================================================*
15 C | S/R SHAP_FILT_cwAPPLY_UV
16 C | o Apply Shapiro filter on momentum :
17 C | filter the argments uFld & vFld.
18 C *==========================================================*
19 C \ev
20
21 C !USES:
22 IMPLICIT NONE
23
24 C == Global variables ===
25 #include "SIZE.h"
26 #include "EEPARAMS.h"
27 #include "PARAMS.h"
28 c #include "DYNVARS.h"
29 #include "GRID.h"
30 #include "SHAP_FILT.h"
31
32 C !INPUT/OUTPUT PARAMETERS:
33 C == Routine arguments ==
34 C uFld :: velocity field (U component) on which filter applies
35 C vFld :: velocity field (V component) on which filter applies
36 C myTime :: Current time in simulation
37 C myIter :: Current iteration number in simulation
38 C myThid :: Thread number for this instance of SHAP_FILT_APPLY_UV
39 _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
40 _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
41 _RL myTime
42 INTEGER myIter
43 INTEGER myThid
44
45 #ifdef ALLOW_SHAP_FILT
46
47 LOGICAL DIFFERENT_MULTIPLE
48 EXTERNAL DIFFERENT_MULTIPLE
49
50 C !LOCAL VARIABLES:
51 C == Local variables ==
52 #ifdef USE_OLD_SHAPIRO_FILTERS
53 C bi,bj,k :: loop index
54 INTEGER bi, bj, k
55 #endif /* USE_OLD_SHAPIRO_FILTERS */
56 CHARACTER*(MAX_LEN_MBUF) suff
57 #ifdef ALLOW_DIAGNOSTICS
58 LOGICAL DIAGNOSTICS_IS_ON
59 EXTERNAL DIAGNOSTICS_IS_ON
60 INTEGER bi, bj, k, i, j
61 _RL dKE_shap(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
62 #endif /* ALLOW_DIAGNOSTICS */
63
64 CEOP
65
66 IF (nShapUV.GT.0) THEN
67
68 #ifdef USE_OLD_SHAPIRO_FILTERS
69 _EXCH_XYZ_R8( uFld,myThid )
70 _EXCH_XYZ_R8( vFld,myThid )
71
72 DO bj=myByLo(myThid),myByHi(myThid)
73 DO bi=myBxLo(myThid),myBxHi(myThid)
74 DO k=1, Nr
75 CALL SHAP_FILT_U( uFld,bi,bj,k,myTime,myThid )
76 CALL SHAP_FILT_V( vFld,bi,bj,k,myTime,myThid )
77 ENDDO
78 ENDDO
79 ENDDO
80
81 _EXCH_XYZ_R8( uFld,myThid )
82 _EXCH_XYZ_R8( vFld,myThid )
83 #else
84 IF ( momStepping .AND. nShapUV.GT.0) THEN
85 IF (Shap_funct.EQ.1) THEN
86 CALL SHAP_FILT_UV_S1(
87 U uFld, vFld, Shap_tmpFld1, Shap_tmpFld2,
88 I Nr, myTime, myThid )
89 ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.20) THEN
90 CALL SHAP_FILT_UV_S2(
91 U uFld, vFld, Shap_tmpFld1, Shap_tmpFld2,
92 I Nr, myTime, myThid )
93 ELSEIF (Shap_funct.EQ.4) THEN
94 CALL SHAP_FILT_UV_S4(
95 U uFld, vFld, Shap_tmpFld1, Shap_tmpFld2,
96 I Nr, myTime, myThid )
97 c ELSEIF (Shap_funct.EQ.20) THEN
98 c CALL SHAP_FILT_UV_S2G(
99 c U uFld, vFld, Shap_tmpFld1, Shap_tmpFld2,
100 c I Nr, myTime, myThid )
101 ELSEIF (Shap_funct.EQ.21) THEN
102 CALL SHAP_FILT_UV_S2C(
103 U uFld, vFld, Shap_tmpFld1, Shap_tmpFld2,
104 I Nr, myTime, myThid )
105 ELSE
106 STOP 'SHAP_FILT_APPLY_UV: Ooops! Bad Shap_funct in UV block'
107 ENDIF
108
109 C----- Diagnostic of Shapiro Filter effect on Momentum :
110 C Note: Shap_tmpFld1,2 from shap_filt_tracer_s2 (and not s1, s4)
111 C are directly proportional to Delta-U,V due to the Filter
112 IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4 .AND.
113 & DIFFERENT_MULTIPLE(Shap_diagFreq,myTime,deltaTClock)
114 & ) THEN
115 _BARRIER
116 _BEGIN_MASTER( myThid )
117 WRITE(suff,'(I10.10)') myIter
118 CALL WRITE_FLD_XYZ_RL( 'shap_dU.', suff, Shap_tmpFld1,
119 & myIter,myThid)
120 CALL WRITE_FLD_XYZ_RL( 'shap_dV.', suff, Shap_tmpFld2,
121 & myIter,myThid)
122 _END_MASTER( myThid )
123 _BARRIER
124 ENDIF
125
126 #ifdef ALLOW_DIAGNOSTICS
127 IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4
128 & .AND. useDiagnostics ) THEN
129 CALL DIAGNOSTICS_FILL(Shap_tmpFld1,'SHAP_dU ',0,Nr,
130 & 0,1,1,myThid)
131 CALL DIAGNOSTICS_FILL(Shap_tmpFld2,'SHAP_dV ',0,Nr,
132 & 0,1,1,myThid)
133 IF ( DIAGNOSTICS_IS_ON('SHAP_dKE',myThid) ) THEN
134 DO bj=myByLo(myThid),myByHi(myThid)
135 DO bi=myBxLo(myThid),myBxHi(myThid)
136 DO k=1,Nr
137 DO j=1,sNy
138 DO i=1,sNx
139 dKE_shap(i,j) = 0.25*(
140 & (
141 & Shap_tmpFld1(i ,j,k,bi,bj)*uFld(i ,j,k,bi,bj)
142 & *_hFacW(i ,j, k,bi,bj)*rAw(i ,j, bi,bj)
143 & +Shap_tmpFld1(i+1,j,k,bi,bj)*uFld(i+1,j,k,bi,bj)
144 & *_hFacW(i+1,j,k,bi,bj)*rAw(i+1,j,bi,bj)
145 & )
146 & + (
147 & Shap_tmpFld2(i,j ,k,bi,bj)*vFld(i,j ,k,bi,bj)
148 & *_hFacS(i,j ,k,bi,bj)*rAs(i,j ,bi,bj)
149 & +Shap_tmpFld2(i,j+1,k,bi,bj)*vFld(i,j+1,k,bi,bj)
150 & *_hFacS(i,j+1,k,bi,bj)*rAs(i,j+1,bi,bj)
151 & ) ) * recip_rA(i,j,bi,bj)
152 ENDDO
153 ENDDO
154 CALL DIAGNOSTICS_FILL(dKE_shap,'SHAP_dKE',
155 & k,1,2,bi,bj,myThid)
156 ENDDO
157 ENDDO
158 ENDDO
159 ENDIF
160 ENDIF
161 #endif /* ALLOW_DIAGNOSTICS */
162
163 ENDIF
164
165 #endif /* USE_OLD_SHAPIRO_FILTERS */
166
167 ENDIF
168 #endif /* ALLOW_SHAP_FILT */
169
170 RETURN
171 END

  ViewVC Help
Powered by ViewVC 1.1.22