/[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.10 - (show annotations) (download)
Tue Apr 28 18:20:30 2009 UTC (15 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62c, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62w, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint63g, checkpoint64, checkpoint62, checkpoint63, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint62b, checkpoint61n, checkpoint61q, checkpoint61o, checkpoint61m, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.9: +5 -5 lines
change macros (EXCH & GLOBAL_SUM/MAX) sufix _R4/_R8 to _RS/_RL
 when applied to _RS/_RL variable

1 C $Header: /u/gcmpack/MITgcm/pkg/shap_filt/shap_filt_apply_uv.F,v 1.9 2008/09/09 19:58:27 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_RL( uFld,myThid )
70 _EXCH_XYZ_RL( 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_RL( uFld,myThid )
82 _EXCH_XYZ_RL( 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 WRITE(suff,'(I10.10)') myIter
117 CALL WRITE_FLD_XYZ_RL( 'shap_dU.', suff, Shap_tmpFld1,
118 & myIter,myThid)
119 CALL WRITE_FLD_XYZ_RL( 'shap_dV.', suff, Shap_tmpFld2,
120 & myIter,myThid)
121 _BARRIER
122 ENDIF
123
124 #ifdef ALLOW_DIAGNOSTICS
125 IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4
126 & .AND. useDiagnostics ) THEN
127 CALL DIAGNOSTICS_FILL(Shap_tmpFld1,'SHAP_dU ',0,Nr,
128 & 0,1,1,myThid)
129 CALL DIAGNOSTICS_FILL(Shap_tmpFld2,'SHAP_dV ',0,Nr,
130 & 0,1,1,myThid)
131 IF ( DIAGNOSTICS_IS_ON('SHAP_dKE',myThid) ) THEN
132 DO bj=myByLo(myThid),myByHi(myThid)
133 DO bi=myBxLo(myThid),myBxHi(myThid)
134 DO k=1,Nr
135 DO j=1,sNy
136 DO i=1,sNx
137 dKE_shap(i,j) = 0.25*(
138 & (
139 & Shap_tmpFld1(i ,j,k,bi,bj)*uFld(i ,j,k,bi,bj)
140 & *_hFacW(i ,j, k,bi,bj)*rAw(i ,j, bi,bj)
141 & +Shap_tmpFld1(i+1,j,k,bi,bj)*uFld(i+1,j,k,bi,bj)
142 & *_hFacW(i+1,j,k,bi,bj)*rAw(i+1,j,bi,bj)
143 & )
144 & + (
145 & Shap_tmpFld2(i,j ,k,bi,bj)*vFld(i,j ,k,bi,bj)
146 & *_hFacS(i,j ,k,bi,bj)*rAs(i,j ,bi,bj)
147 & +Shap_tmpFld2(i,j+1,k,bi,bj)*vFld(i,j+1,k,bi,bj)
148 & *_hFacS(i,j+1,k,bi,bj)*rAs(i,j+1,bi,bj)
149 & ) ) * recip_rA(i,j,bi,bj)
150 ENDDO
151 ENDDO
152 CALL DIAGNOSTICS_FILL(dKE_shap,'SHAP_dKE',
153 & k,1,2,bi,bj,myThid)
154 ENDDO
155 ENDDO
156 ENDDO
157 ENDIF
158 ENDIF
159 #endif /* ALLOW_DIAGNOSTICS */
160
161 ENDIF
162
163 #endif /* USE_OLD_SHAPIRO_FILTERS */
164
165 ENDIF
166 #endif /* ALLOW_SHAP_FILT */
167
168 RETURN
169 END

  ViewVC Help
Powered by ViewVC 1.1.22