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

Diff of /MITgcm/pkg/shap_filt/shap_filt_apply_ts.F

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

revision 1.8 by jmc, Sun May 15 03:04:57 2005 UTC revision 1.12 by jmc, Tue Apr 28 18:20:30 2009 UTC
# Line 49  C     == Local variables == Line 49  C     == Local variables ==
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          INTEGER exchInOut
53        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_MBUF) suff
54    
55  CEOP  CEOP
56    
57        IF (nShapT.GT.0 .OR. nShapS.GT.0) THEN        IF (nShapT.GT.0 .OR. nShapS.GT.0) THEN
58    
59    C-    Apply Exchanges on Input field, before the filter (but not after):
60            exchInOut = 1
61    C-    Apply Exchanges on Output field, after the filter (but not before):
62            IF ( implicitIntGravWave ) exchInOut = 2
63    
64  #ifdef USE_OLD_SHAPIRO_FILTERS  #ifdef USE_OLD_SHAPIRO_FILTERS
65    
66          IF ( tempStepping ) _EXCH_XYZ_R8( tFld,myThid )          IF ( tempStepping ) _EXCH_XYZ_RL( tFld,myThid )
67          IF ( saltStepping ) _EXCH_XYZ_R8( sFld,myThid )          IF ( saltStepping ) _EXCH_XYZ_RL( sFld,myThid )
68    
69          DO bj=myByLo(myThid),myByHi(myThid)          DO bj=myByLo(myThid),myByHi(myThid)
70           DO bi=myBxLo(myThid),myBxHi(myThid)           DO bi=myBxLo(myThid),myBxHi(myThid)
71            DO k=1, Nr            DO k=1, Nr
72              IF ( tempStepping )              IF ( tempStepping )
73       &       CALL SHAP_FILT_TRACEROLD( tFld,bi,bj,k,myTime,myThid )       &       CALL SHAP_FILT_TRACEROLD( tFld,bi,bj,k,myTime,myThid )
74              IF ( saltStepping )              IF ( saltStepping )
75       &       CALL SHAP_FILT_TRACEROLD( sFld,bi,bj,k,myTime,myThid )       &       CALL SHAP_FILT_TRACEROLD( sFld,bi,bj,k,myTime,myThid )
76            ENDDO            ENDDO
77           ENDDO           ENDDO
78          ENDDO          ENDDO
79    
80          IF ( tempStepping ) _EXCH_XYZ_R8( tFld,myThid )          IF ( tempStepping ) _EXCH_XYZ_RL( tFld,myThid )
81          IF ( saltStepping ) _EXCH_XYZ_R8( sFld,myThid )          IF ( saltStepping ) _EXCH_XYZ_RL( sFld,myThid )
82    
83  #else  #else
84    
# Line 81  CEOP Line 87  CEOP
87              CALL SHAP_FILT_TRACER_S1(              CALL SHAP_FILT_TRACER_S1(
88       U           tFld, Shap_tmpFld1,       U           tFld, Shap_tmpFld1,
89       I           nShapT, Nr, myTime, myThid )       I           nShapT, Nr, myTime, myThid )
90            ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.21) THEN            ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.20
91         &                            .OR. Shap_funct.EQ.21) THEN
92              CALL SHAP_FILT_TRACER_S2(              CALL SHAP_FILT_TRACER_S2(
93       U           tFld, Shap_tmpFld1,       U           tFld, Shap_tmpFld1,
94       I           nShapT, Nr, myTime, myThid )       I           nShapT, exchInOut, Nr, myTime, myIter, myThid )
95            ELSEIF (Shap_funct.EQ.4) THEN            ELSEIF (Shap_funct.EQ.4) THEN
96              CALL SHAP_FILT_TRACER_S4(              CALL SHAP_FILT_TRACER_S4(
97       U           tFld, Shap_tmpFld1,       U           tFld, Shap_tmpFld1,
98       I           nShapT, Nr, myTime, myThid )       I           nShapT, Nr, myTime, myThid )
99            ELSEIF (Shap_funct.EQ.20) THEN  c         ELSEIF (Shap_funct.EQ.20) THEN
100              CALL SHAP_FILT_TRACER_S2G(  c           CALL SHAP_FILT_TRACER_S2G(
101       U           tFld, Shap_tmpFld1,  c    U           tFld, Shap_tmpFld1,
102       I           nShapT, Nr, myTime, myThid )  c    I           nShapT, Nr, myTime, myThid )
103            ELSE            ELSE
104             STOP 'SHAP_FILT_APPLY_TS: Ooops! Bad Shap_funct in T block'             STOP 'SHAP_FILT_APPLY_TS: Ooops! Bad Shap_funct in T block'
105            ENDIF            ENDIF
# Line 104  C               is directly proportional Line 111  C               is directly proportional
111       &     DIFFERENT_MULTIPLE(Shap_diagFreq,myTime,deltaTClock)       &     DIFFERENT_MULTIPLE(Shap_diagFreq,myTime,deltaTClock)
112       &       ) THEN       &       ) THEN
113             _BARRIER             _BARRIER
            _BEGIN_MASTER( myThid )  
114             WRITE(suff,'(I10.10)') myIter             WRITE(suff,'(I10.10)') myIter
115             CALL WRITE_FLD_XYZ_RL( 'shap_dT.', suff, Shap_tmpFld1,             CALL WRITE_FLD_XYZ_RL( 'shap_dT.', suff, Shap_tmpFld1,
116       &                            myIter, myThid)       &                            myIter, myThid)
            _END_MASTER( myThid )  
117             _BARRIER             _BARRIER
118            ENDIF            ENDIF
119    
# Line 122  C               is directly proportional Line 127  C               is directly proportional
127    
128          ENDIF          ENDIF
129    
130          IF ( saltStepping .AND. nShapS.GT.0) THEN          IF ( saltStepping .AND. nShapS.GT.0) THEN
131            IF (Shap_funct.EQ.1) THEN            IF (Shap_funct.EQ.1) THEN
132              CALL SHAP_FILT_TRACER_S1(              CALL SHAP_FILT_TRACER_S1(
133       U           sFld, Shap_tmpFld1,       U           sFld, Shap_tmpFld1,
134       I           nShapS, Nr, myTime, myThid )       I           nShapS, Nr, myTime, myThid )
135            ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.21) THEN            ELSEIF (Shap_funct.EQ.2 .OR. Shap_funct.EQ.20
136         &                            .OR. Shap_funct.EQ.21) THEN
137              CALL SHAP_FILT_TRACER_S2(              CALL SHAP_FILT_TRACER_S2(
138       U           sFld, Shap_tmpFld1,       U           sFld, Shap_tmpFld1,
139       I           nShapS, Nr, myTime, myThid )       I           nShapS, exchInOut, Nr, myTime, myIter, myThid )
140            ELSEIF (Shap_funct.EQ.4) THEN            ELSEIF (Shap_funct.EQ.4) THEN
141              CALL SHAP_FILT_TRACER_S4(              CALL SHAP_FILT_TRACER_S4(
142       U           sFld, Shap_tmpFld1,       U           sFld, Shap_tmpFld1,
143       I           nShapS, Nr, myTime, myThid )       I           nShapS, Nr, myTime, myThid )
144            ELSEIF (Shap_funct.EQ.20) THEN  c         ELSEIF (Shap_funct.EQ.20) THEN
145              CALL SHAP_FILT_TRACER_S2G(  c           CALL SHAP_FILT_TRACER_S2G(
146       U           sFld, Shap_tmpFld1,  c    U           sFld, Shap_tmpFld1,
147       I           nShapS, Nr, myTime, myThid )  c    I           nShapS, Nr, myTime, myThid )
148            ELSE            ELSE
149             STOP 'SHAP_FILT_APPLY_TS: Ooops! Bad Shap_funct in S block'             STOP 'SHAP_FILT_APPLY_TS: Ooops! Bad Shap_funct in S block'
150            ENDIF            ENDIF
151    
152  C-----    Diagnostic of Shapiro Filter effect on salinity :  C-----    Diagnostic of Shapiro Filter effect on salinity :
153  C         Note: Shap_tmpFld1 from shap_filt_tracer_s2 (and not s1, s4)  C         Note: Shap_tmpFld1 from shap_filt_tracer_s2 (and not s1, s4)
154  C               is directly proportional to Delta-Tr due to the Filter  C               is directly proportional to Delta-Tr due to the Filter
155            IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4 .AND.            IF ( Shap_funct.NE.1 .AND. Shap_funct.NE.4 .AND.
156       &     DIFFERENT_MULTIPLE(Shap_diagFreq,myTime,deltaTClock)       &     DIFFERENT_MULTIPLE(Shap_diagFreq,myTime,deltaTClock)
157       &       ) THEN       &       ) THEN
158             _BARRIER             _BARRIER
            _BEGIN_MASTER( myThid )  
159             WRITE(suff,'(I10.10)') myIter             WRITE(suff,'(I10.10)') myIter
160             CALL WRITE_FLD_XYZ_RL( 'shap_dS.', suff, Shap_tmpFld1,             CALL WRITE_FLD_XYZ_RL( 'shap_dS.', suff, Shap_tmpFld1,
161       &                            myIter, myThid)       &                            myIter, myThid)
            _END_MASTER( myThid )  
162             _BARRIER             _BARRIER
163            ENDIF            ENDIF
164    

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22