40 |
|
|
41 |
#ifdef ALLOW_SHAP_FILT |
#ifdef ALLOW_SHAP_FILT |
42 |
|
|
43 |
|
LOGICAL DIFFERENT_MULTIPLE |
44 |
|
EXTERNAL DIFFERENT_MULTIPLE |
45 |
|
|
46 |
C !LOCAL VARIABLES: ==================================================== |
C !LOCAL VARIABLES: ==================================================== |
|
#ifdef USE_OLD_SHAPIRO_FILTERS |
|
47 |
C == Local variables == |
C == Local variables == |
48 |
|
#ifdef USE_OLD_SHAPIRO_FILTERS |
49 |
C bi,bj,k :: loop index |
C bi,bj,k :: loop index |
50 |
INTEGER bi, bj, k |
INTEGER bi, bj, k |
51 |
#endif /* USE_OLD_SHAPIRO_FILTERS */ |
#endif /* USE_OLD_SHAPIRO_FILTERS */ |
52 |
|
CHARACTER*(MAX_LEN_MBUF) suff |
53 |
|
|
54 |
CEOP |
CEOP |
55 |
|
|
56 |
IF (nShapT.GT.0) THEN |
IF (nShapT.GT.0 .OR. nShapS.GT.0) THEN |
57 |
|
|
58 |
#ifdef USE_OLD_SHAPIRO_FILTERS |
#ifdef USE_OLD_SHAPIRO_FILTERS |
59 |
|
|
80 |
IF (Shap_funct.EQ.1) THEN |
IF (Shap_funct.EQ.1) THEN |
81 |
CALL SHAP_FILT_TRACER_S1( |
CALL SHAP_FILT_TRACER_S1( |
82 |
U tFld, Shap_tmpFld1, |
U tFld, Shap_tmpFld1, |
83 |
I Nr, myTime, myThid ) |
I nShapT, Nr, myTime, myThid ) |
84 |
ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.21) THEN |
ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.21) THEN |
85 |
CALL SHAP_FILT_TRACER_S2( |
CALL SHAP_FILT_TRACER_S2( |
86 |
U tFld, Shap_tmpFld1, |
U tFld, Shap_tmpFld1, |
87 |
I Nr, myTime, myThid ) |
I nShapT, Nr, myTime, myThid ) |
88 |
ELSEIF (Shap_funct.EQ.4) THEN |
ELSEIF (Shap_funct.EQ.4) THEN |
89 |
CALL SHAP_FILT_TRACER_S4( |
CALL SHAP_FILT_TRACER_S4( |
90 |
U tFld, Shap_tmpFld1, |
U tFld, Shap_tmpFld1, |
91 |
I Nr, myTime, myThid ) |
I nShapT, Nr, myTime, myThid ) |
92 |
ELSEIF (Shap_funct.EQ.20) THEN |
ELSEIF (Shap_funct.EQ.20) THEN |
93 |
CALL SHAP_FILT_TRACER_S2G( |
CALL SHAP_FILT_TRACER_S2G( |
94 |
U tFld, Shap_tmpFld1, |
U tFld, Shap_tmpFld1, |
95 |
I Nr, myTime, myThid ) |
I nShapT, Nr, myTime, myThid ) |
96 |
ELSE |
ELSE |
97 |
STOP 'SHAP_FILT_APPLY_TS: Ooops! Bad Shap_funct in T block' |
STOP 'SHAP_FILT_APPLY_TS: Ooops! Bad Shap_funct in T block' |
98 |
ENDIF |
ENDIF |
99 |
|
|
100 |
|
C----- Diagnostic of Shapiro Filter effect on temperature : |
101 |
|
C Note: Shap_tmpFld1 from shap_filt_tracer_s2 (and not s1, s4) |
102 |
|
C is directly proportional to Delta-Tr due to the Filter |
103 |
|
IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4 .AND. |
104 |
|
& DIFFERENT_MULTIPLE(Shap_diagFreq,myTime,myTime-deltaTClock) |
105 |
|
& ) THEN |
106 |
|
_BARRIER |
107 |
|
_BEGIN_MASTER( myThid ) |
108 |
|
WRITE(suff,'(I10.10)') myIter |
109 |
|
CALL WRITE_FLD_XYZ_RL( 'shap_dT.', suff, Shap_tmpFld1, |
110 |
|
& myIter, myThid) |
111 |
|
_END_MASTER( myThid ) |
112 |
|
_BARRIER |
113 |
|
ENDIF |
114 |
|
|
115 |
|
#ifdef ALLOW_DIAGNOSTICS |
116 |
|
IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4 |
117 |
|
& .AND. useDiagnostics ) THEN |
118 |
|
CALL DIAGNOSTICS_FILL(Shap_tmpFld1,'SHAP_dT ',0,Nr, |
119 |
|
& 0,1,1,myThid) |
120 |
|
ENDIF |
121 |
|
#endif /* ALLOW_DIAGNOSTICS */ |
122 |
|
|
123 |
ENDIF |
ENDIF |
124 |
|
|
125 |
IF ( saltStepping .AND. nShapT.GT.0) THEN |
IF ( saltStepping .AND. nShapS.GT.0) THEN |
126 |
IF (Shap_funct.EQ.1) THEN |
IF (Shap_funct.EQ.1) THEN |
127 |
CALL SHAP_FILT_TRACER_S1( |
CALL SHAP_FILT_TRACER_S1( |
128 |
U sFld, Shap_tmpFld1, |
U sFld, Shap_tmpFld1, |
129 |
I Nr, myTime, myThid ) |
I nShapS, Nr, myTime, myThid ) |
130 |
ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.21) THEN |
ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.21) THEN |
131 |
CALL SHAP_FILT_TRACER_S2( |
CALL SHAP_FILT_TRACER_S2( |
132 |
U sFld, Shap_tmpFld1, |
U sFld, Shap_tmpFld1, |
133 |
I Nr, myTime, myThid ) |
I nShapS, Nr, myTime, myThid ) |
134 |
ELSEIF (Shap_funct.EQ.4) THEN |
ELSEIF (Shap_funct.EQ.4) THEN |
135 |
CALL SHAP_FILT_TRACER_S4( |
CALL SHAP_FILT_TRACER_S4( |
136 |
U sFld, Shap_tmpFld1, |
U sFld, Shap_tmpFld1, |
137 |
I Nr, myTime, myThid ) |
I nShapS, Nr, myTime, myThid ) |
138 |
ELSEIF (Shap_funct.EQ.20) THEN |
ELSEIF (Shap_funct.EQ.20) THEN |
139 |
CALL SHAP_FILT_TRACER_S2G( |
CALL SHAP_FILT_TRACER_S2G( |
140 |
U sFld, Shap_tmpFld1, |
U sFld, Shap_tmpFld1, |
141 |
I Nr, myTime, myThid ) |
I nShapS, Nr, myTime, myThid ) |
142 |
ELSE |
ELSE |
143 |
STOP 'SHAP_FILT_APPLY_TS: Ooops! Bad Shap_funct in S block' |
STOP 'SHAP_FILT_APPLY_TS: Ooops! Bad Shap_funct in S block' |
144 |
ENDIF |
ENDIF |
145 |
|
|
146 |
|
C----- Diagnostic of Shapiro Filter effect on salinity : |
147 |
|
C Note: Shap_tmpFld1 from shap_filt_tracer_s2 (and not s1, s4) |
148 |
|
C is directly proportional to Delta-Tr due to the Filter |
149 |
|
IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4 .AND. |
150 |
|
& DIFFERENT_MULTIPLE(Shap_diagFreq,myTime,myTime-deltaTClock) |
151 |
|
& ) THEN |
152 |
|
_BARRIER |
153 |
|
_BEGIN_MASTER( myThid ) |
154 |
|
WRITE(suff,'(I10.10)') myIter |
155 |
|
CALL WRITE_FLD_XYZ_RL( 'shap_dS.', suff, Shap_tmpFld1, |
156 |
|
& myIter, myThid) |
157 |
|
_END_MASTER( myThid ) |
158 |
|
_BARRIER |
159 |
|
ENDIF |
160 |
|
|
161 |
|
#ifdef ALLOW_DIAGNOSTICS |
162 |
|
IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4 |
163 |
|
& .AND. useDiagnostics ) THEN |
164 |
|
CALL DIAGNOSTICS_FILL(Shap_tmpFld1,'SHAP_dS ',0,Nr, |
165 |
|
& 0,1,1,myThid) |
166 |
|
ENDIF |
167 |
|
#endif /* ALLOW_DIAGNOSTICS */ |
168 |
|
|
169 |
ENDIF |
ENDIF |
170 |
|
|
171 |
#endif /* USE_OLD_SHAPIRO_FILTERS */ |
#endif /* USE_OLD_SHAPIRO_FILTERS */ |