/[MITgcm]/MITgcm/model/src/external_forcing.F
ViewVC logotype

Diff of /MITgcm/model/src/external_forcing.F

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

revision 1.28 by jmc, Tue Oct 19 02:39:58 2004 UTC revision 1.35 by stephd, Mon Dec 19 19:09:35 2005 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "PACKAGES_CONFIG.h"  #include "PACKAGES_CONFIG.h"
5  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
6  #ifdef ALLOW_OBCS  #ifdef ALLOW_EXF
7  # include "OBCS_OPTIONS.h"  # include "EXF_OPTIONS.h"
8  #endif  #endif
9    
10  CBOP  CBOP
11  C     !ROUTINE: EXTERNAL_FORCING_U  C     !ROUTINE: EXTERNAL_FORCING_U
12  C     !INTERFACE:  C     !INTERFACE:
13        SUBROUTINE EXTERNAL_FORCING_U(        SUBROUTINE EXTERNAL_FORCING_U(
14       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
15       I           myCurrentTime,myThid)       I           myTime, myThid )
16  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
17  C     *==========================================================*  C     *==========================================================*
18  C     | S/R EXTERNAL_FORCING_U                                      C     | S/R EXTERNAL_FORCING_U
19  C     | o Contains problem specific forcing for zonal velocity.    C     | o Contains problem specific forcing for zonal velocity.
20  C     *==========================================================*  C     *==========================================================*
21  C     | Adds terms to gU for forcing by external sources            C     | Adds terms to gU for forcing by external sources
22  C     | e.g. wind stress, bottom friction etc..................    C     | e.g. wind stress, bottom friction etc ...
23  C     *==========================================================*  C     *==========================================================*
24  C     \ev  C     \ev
25    
# Line 35  C     == Global data == Line 35  C     == Global data ==
35    
36  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
37  C     == Routine arguments ==  C     == Routine arguments ==
38  C     iMin - Working range of tile for applying forcing.  C     iMin,iMax :: Working range of x-index for applying forcing.
39  C     iMax  C     jMin,jMax :: Working range of y-index for applying forcing.
40  C     jMin  C     bi,bj     :: Current tile indices
41  C     jMax  C     kLev      :: Current vertical level index
42  C     kLev  C     myTime    :: Current time in simulation
43    C     myThid    :: Thread Id number
44        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
45        _RL myCurrentTime        _RL myTime
46        INTEGER myThid        INTEGER myThid
47    
48  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
49  C     == Local variables ==  C     == Local variables ==
50  C     Loop counters  C     i,j       :: Loop counters
51        INTEGER I, J  C     kSurface  :: index of surface layer
52  C     number of surface interface layer        INTEGER i, j
53        INTEGER kSurface        INTEGER kSurface
54  CEOP  CEOP
55    
# Line 64  C--   Forcing term Line 65  C--   Forcing term
65  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
66        IF ( useAIM ) CALL AIM_TENDENCY_APPLY_U(        IF ( useAIM ) CALL AIM_TENDENCY_APPLY_U(
67       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
68       &                      myCurrentTime, myThid )       &                      myTime, myThid )
69  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
70  C AMM  
71  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
72        IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_U(        IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_U(
73       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
74       &                      myCurrentTime, myThid )       &                      myTime, myThid )
75  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
 C AMM  
76    
77  C     Add windstress momentum impulse into the top-layer  C     Add windstress momentum impulse into the top-layer
78        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
79         DO j=jMin,jMax  c      DO j=1,sNy
80          DO i=iMin,iMax  C-jmc: Without CD-scheme, this is OK ; but with CD-scheme, needs to cover [0:sNy+1]
81           DO j=0,sNy+1
82            DO i=1,sNx+1
83           gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)           gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
84       &   +foFacMom*surfaceForcingU(i,j,bi,bj)       &   +foFacMom*surfaceForcingU(i,j,bi,bj)
85       &   *recip_drF(kLev)*recip_hFacW(i,j,kLev,bi,bj)       &   *recip_drF(kLev)*recip_hFacW(i,j,kLev,bi,bj)
# Line 85  C     Add windstress momentum impulse in Line 87  C     Add windstress momentum impulse in
87         ENDDO         ENDDO
88        ENDIF        ENDIF
89    
90  #if (defined (ALLOW_OBCS) && defined (ALLOW_OBCS_SPONGE))  #if (defined (ALLOW_TAU_EDDY))
91           CALL TAUEDDY_EXTERNAL_FORCING_U(
92         I           iMin,iMax, jMin,jMax, bi,bj, kLev,
93         I           myTime, myThid )
94    #endif
95    
96    #ifdef ALLOW_OBCS
97        IF (useOBCS) THEN        IF (useOBCS) THEN
98         CALL OBCS_SPONGE_U(         CALL OBCS_SPONGE_U(
99       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
100       I           myCurrentTime,myThid)       I           myTime, myThid )
101        ENDIF        ENDIF
102  #endif  #endif
103    
104        RETURN        RETURN
105        END        END
106    
107    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
108  CBOP  CBOP
109  C     !ROUTINE: EXTERNAL_FORCING_V  C     !ROUTINE: EXTERNAL_FORCING_V
110  C     !INTERFACE:  C     !INTERFACE:
111        SUBROUTINE EXTERNAL_FORCING_V(        SUBROUTINE EXTERNAL_FORCING_V(
112       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
113       I           myCurrentTime,myThid)       I           myTime, myThid )
114  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
115  C     *==========================================================*  C     *==========================================================*
116  C     | S/R EXTERNAL_FORCING_V                                      C     | S/R EXTERNAL_FORCING_V
117  C     | o Contains problem specific forcing for merid velocity.    C     | o Contains problem specific forcing for merid velocity.
118  C     *==========================================================*  C     *==========================================================*
119  C     | Adds terms to gV for forcing by external sources            C     | Adds terms to gV for forcing by external sources
120  C     | e.g. wind stress, bottom friction etc..................    C     | e.g. wind stress, bottom friction etc ...
121  C     *==========================================================*  C     *==========================================================*
122  C     \ev  C     \ev
123    
# Line 123  C     == Global data == Line 133  C     == Global data ==
133    
134  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
135  C     == Routine arguments ==  C     == Routine arguments ==
136  C     iMin - Working range of tile for applying forcing.  C     iMin,iMax :: Working range of x-index for applying forcing.
137  C     iMax  C     jMin,jMax :: Working range of y-index for applying forcing.
138  C     jMin  C     bi,bj     :: Current tile indices
139  C     jMax  C     kLev      :: Current vertical level index
140  C     kLev  C     myTime    :: Current time in simulation
141    C     myThid    :: Thread Id number
142        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
143        _RL myCurrentTime        _RL myTime
144        INTEGER myThid        INTEGER myThid
145    
146  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
147  C     == Local variables ==  C     == Local variables ==
148  C     Loop counters  C     i,j       :: Loop counters
149        INTEGER I, J  C     kSurface  :: index of surface layer
150  C     number of surface interface layer        INTEGER i, j
151        INTEGER kSurface        INTEGER kSurface
152  CEOP  CEOP
153    
# Line 152  C--   Forcing term Line 163  C--   Forcing term
163  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
164        IF ( useAIM ) CALL AIM_TENDENCY_APPLY_V(        IF ( useAIM ) CALL AIM_TENDENCY_APPLY_V(
165       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
166       &                      myCurrentTime, myThid )       &                      myTime, myThid )
167  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
168    
 C AMM  
169  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
170        IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_V(        IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_V(
171       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
172       &                      myCurrentTime, myThid )       &                      myTime, myThid )
173  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
174  C AMM  
175  C     Add windstress momentum impulse into the top-layer  C     Add windstress momentum impulse into the top-layer
176        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
177         DO j=jMin,jMax         DO j=1,sNy+1
178          DO i=iMin,iMax  c       DO i=1,sNx
179    C-jmc: Without CD-scheme, this is OK ; but with CD-scheme, needs to cover [0:sNx+1]
180            DO i=0,sNx+1
181           gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)           gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
182       &   +foFacMom*surfaceForcingV(i,j,bi,bj)       &   +foFacMom*surfaceForcingV(i,j,bi,bj)
183       &   *recip_drF(kLev)*recip_hFacS(i,j,kLev,bi,bj)       &   *recip_drF(kLev)*recip_hFacS(i,j,kLev,bi,bj)
# Line 173  C     Add windstress momentum impulse in Line 185  C     Add windstress momentum impulse in
185         ENDDO         ENDDO
186        ENDIF        ENDIF
187    
188  #if (defined (ALLOW_OBCS) && defined (ALLOW_OBCS_SPONGE))  #if (defined (ALLOW_TAU_EDDY))
189           CALL TAUEDDY_EXTERNAL_FORCING_V(
190         I           iMin,iMax, jMin,jMax, bi,bj, kLev,
191         I           myTime, myThid )
192    #endif
193    
194    #ifdef ALLOW_OBCS
195        IF (useOBCS) THEN        IF (useOBCS) THEN
196         CALL OBCS_SPONGE_V(         CALL OBCS_SPONGE_V(
197       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
198       I           myCurrentTime,myThid)       I           myTime, myThid )
199        ENDIF        ENDIF
200  #endif  #endif
201    
202        RETURN        RETURN
203        END        END
204    
205    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
206  CBOP  CBOP
207  C     !ROUTINE: EXTERNAL_FORCING_T  C     !ROUTINE: EXTERNAL_FORCING_T
208  C     !INTERFACE:  C     !INTERFACE:
209        SUBROUTINE EXTERNAL_FORCING_T(        SUBROUTINE EXTERNAL_FORCING_T(
210       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
211       I           myCurrentTime,myThid)       I           myTime, myThid )
212  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
213  C     *==========================================================*  C     *==========================================================*
214  C     | S/R EXTERNAL_FORCING_T                                      C     | S/R EXTERNAL_FORCING_T
215  C     | o Contains problem specific forcing for temperature.        C     | o Contains problem specific forcing for temperature.
216  C     *==========================================================*  C     *==========================================================*
217  C     | Adds terms to gT for forcing by external sources            C     | Adds terms to gT for forcing by external sources
218  C     | e.g. heat flux, climatalogical relaxation..............    C     | e.g. heat flux, climatalogical relaxation, etc ...
219  C     *==========================================================*  C     *==========================================================*
220  C     \ev  C     \ev
221    
# Line 211  C     == Global data == Line 231  C     == Global data ==
231    
232  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
233  C     == Routine arguments ==  C     == Routine arguments ==
234  C     iMin - Working range of tile for applying forcing.  C     iMin,iMax :: Working range of x-index for applying forcing.
235  C     iMax  C     jMin,jMax :: Working range of y-index for applying forcing.
236  C     jMin  C     bi,bj     :: Current tile indices
237  C     jMax  C     kLev      :: Current vertical level index
238  C     kLev  C     myTime    :: Current time in simulation
239    C     myThid    :: Thread Id number
240        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
241        _RL myCurrentTime        _RL myTime
242        INTEGER myThid        INTEGER myThid
 CEndOfInterface  
243    
244  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
245  C     == Local variables ==  C     == Local variables ==
246  C     Loop counters  C     i,j       :: Loop counters
247        INTEGER I, J  C     kSurface  :: index of surface layer
248  C     number of surface interface layer        INTEGER i, j
249        INTEGER kSurface        INTEGER kSurface
250    CEOP
251  #ifdef SHORTWAVE_HEATING  #ifdef SHORTWAVE_HEATING
252        integer two        integer two
253        _RL minusone        _RL minusone
# Line 234  C     number of surface interface layer Line 255  C     number of surface interface layer
255        _RL swfracb(two)        _RL swfracb(two)
256        INTEGER kp1        INTEGER kp1
257  #endif  #endif
 CEOP  
258    
259        IF ( fluidIsAir ) THEN        IF ( fluidIsAir ) THEN
260         kSurface = 0         kSurface = 0
# Line 248  C--   Forcing term Line 268  C--   Forcing term
268  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
269        IF ( useAIM ) CALL AIM_TENDENCY_APPLY_T(        IF ( useAIM ) CALL AIM_TENDENCY_APPLY_T(
270       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
271       &                      myCurrentTime, myThid )       &                      myTime, myThid )
272  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
273    
 C AMM  
274  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
275        IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_T(        IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_T(
276       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
277       &                      myCurrentTime, myThid )       &                      myTime, myThid )
278  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
 C AMM  
279    
280  C     Add heat in top-layer  C     Add heat in top-layer
281        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
282         DO j=jMin,jMax         DO j=1,sNy
283          DO i=iMin,iMax          DO i=1,sNx
284           gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)           gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
285       &     +surfaceForcingT(i,j,bi,bj)       &     +surfaceForcingT(i,j,bi,bj)
286       &     *recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)       &     *recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)
# Line 272  C     Add heat in top-layer Line 290  C     Add heat in top-layer
290    
291  #ifdef SHORTWAVE_HEATING  #ifdef SHORTWAVE_HEATING
292  C Penetrating SW radiation  C Penetrating SW radiation
293        kp1 = klev+1  c     IF ( usePenetratingSW ) THEN
294        swfracb(1)=abs(rF(klev))         swfracb(1)=abs(rF(klev))
295        swfracb(2)=abs(rF(klev+1))         swfracb(2)=abs(rF(klev+1))
296        CALL SWFRAC(         CALL SWFRAC(
297       I     two,minusone,       I     two,minusone,
298       I     myCurrentTime,myThid,       I     myTime,myThid,
299       U     swfracb)       U     swfracb)
300        IF (klev.EQ.Nr) THEN         kp1 = klev+1
301           IF (klev.EQ.Nr) THEN
302          kp1 = klev          kp1 = klev
303          swfracb(2)=0. _d 0          swfracb(2)=0. _d 0
304        ENDIF         ENDIF
305        DO j=jMin,jMax         DO j=1,sNy
306         DO i=iMin,iMax          DO i=1,sNx
307          gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)           gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)
308       &   -Qsw(i,j,bi,bj)*(swfracb(1)*maskC(i,j,klev,bi,bj)       &   -Qsw(i,j,bi,bj)*(swfracb(1)*maskC(i,j,klev,bi,bj)
309       &                   -swfracb(2)*maskC(i,j,kp1, bi,bj))       &                   -swfracb(2)*maskC(i,j,kp1, bi,bj))
310       &    *recip_Cp*recip_rhoConst       &    *recip_Cp*recip_rhoConst
311       &    *recip_drF(klev)*recip_hFacC(i,j,kLev,bi,bj)       &    *recip_drF(klev)*recip_hFacC(i,j,kLev,bi,bj)
312            ENDDO
313         ENDDO         ENDDO
314        ENDDO  c     ENDIF
315    #endif
316    
317    #ifdef ALLOW_RBCS
318           if (useRBCS) then
319              call RBCS_ADD_TENDENCY(bi,bj,klev, 1,
320         &                            myTime, myThid )
321           endif
322  #endif  #endif
323    
324  #if (defined (ALLOW_OBCS) && defined (ALLOW_OBCS_SPONGE))  #ifdef ALLOW_CLIMTEMP_RELAXATION
325           IF ( tauThetaClimRelax3Dim .NE. 0. ) THEN
326            DO j=1,sNy
327             DO i=1,sNx
328              gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)
329         &     -1./tauThetaClimRelax3Dim
330         &         *(theta(i,j,klev,bi,bj)-thetaStar(i,j,klev,bi,bj))
331         &         *hFacC(i,j,klev,bi,bj)*recip_hFacC(i,j,kLev,bi,bj)
332             ENDDO
333            ENDDO
334           ENDIF
335    #endif
336    
337    #ifdef ALLOW_OBCS
338        IF (useOBCS) THEN        IF (useOBCS) THEN
339         CALL OBCS_SPONGE_T(         CALL OBCS_SPONGE_T(
340       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
341       I           myCurrentTime,myThid)       I           myTime, myThid )
342        ENDIF        ENDIF
343  #endif  #endif
344    
345        RETURN        RETURN
346        END        END
347    
348    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
349  CBOP  CBOP
350  C     !ROUTINE: EXTERNAL_FORCING_S  C     !ROUTINE: EXTERNAL_FORCING_S
351  C     !INTERFACE:  C     !INTERFACE:
352        SUBROUTINE EXTERNAL_FORCING_S(        SUBROUTINE EXTERNAL_FORCING_S(
353       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
354       I           myCurrentTime,myThid)       I           myTime, myThid )
355    
356  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
357  C     *==========================================================*  C     *==========================================================*
358  C     | S/R EXTERNAL_FORCING_S                                      C     | S/R EXTERNAL_FORCING_S
359  C     | o Contains problem specific forcing for merid velocity.    C     | o Contains problem specific forcing for merid velocity.
360  C     *==========================================================*  C     *==========================================================*
361  C     | Adds terms to gS for forcing by external sources            C     | Adds terms to gS for forcing by external sources
362  C     | e.g. fresh-water flux, climatalogical relaxation.......    C     | e.g. fresh-water flux, climatalogical relaxation, etc ...
363  C     *==========================================================*  C     *==========================================================*
364  C     \ev  C     \ev
365    
# Line 333  C     == Global data == Line 375  C     == Global data ==
375    
376  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
377  C     == Routine arguments ==  C     == Routine arguments ==
378  C     iMin - Working range of tile for applying forcing.  C     iMin,iMax :: Working range of x-index for applying forcing.
379  C     iMax  C     jMin,jMax :: Working range of y-index for applying forcing.
380  C     jMin  C     bi,bj     :: Current tile indices
381  C     jMax  C     kLev      :: Current vertical level index
382  C     kLev  C     myTime    :: Current time in simulation
383    C     myThid    :: Thread Id number
384        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
385        _RL myCurrentTime        _RL myTime
386        INTEGER myThid        INTEGER myThid
387    
388  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
389  C     == Local variables ==  C     == Local variables ==
390  C     Loop counters  C     i,j       :: Loop counters
391        INTEGER I, J  C     kSurface  :: index of surface layer
392  C     number of surface interface layer        INTEGER i, j
393        INTEGER kSurface        INTEGER kSurface
394  CEOP  CEOP
395    
# Line 362  C--   Forcing term Line 405  C--   Forcing term
405  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
406        IF ( useAIM ) CALL AIM_TENDENCY_APPLY_S(        IF ( useAIM ) CALL AIM_TENDENCY_APPLY_S(
407       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
408       &                      myCurrentTime, myThid )       &                      myTime, myThid )
409  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
410    
 C AMM  
411  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
412        IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_S(        IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_S(
413       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,       &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
414       &                      myCurrentTime, myThid )       &                      myTime, myThid )
415  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
 C AMM  
416    
417  C     Add fresh-water in top-layer  C     Add fresh-water in top-layer
418        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
419         DO j=jMin,jMax         DO j=1,sNy
420          DO i=iMin,iMax          DO i=1,sNx
421           gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)           gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
422       &     +surfaceForcingS(i,j,bi,bj)       &     +surfaceForcingS(i,j,bi,bj)
423       &     *recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)       &     *recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)
# Line 384  C     Add fresh-water in top-layer Line 425  C     Add fresh-water in top-layer
425         ENDDO         ENDDO
426        ENDIF        ENDIF
427    
428  #if (defined (ALLOW_OBCS) && defined (ALLOW_OBCS_SPONGE))  #ifdef ALLOW_RBCS
429           if (useRBCS) then
430              call RBCS_ADD_TENDENCY(bi,bj,klev, 2,
431         &                            myTime, myThid )
432           endif
433    #endif
434    
435    #ifdef ALLOW_CLIMSALT_RELAXATION
436           IF ( tauSaltClimRelax3Dim .NE. 0. ) THEN
437            DO j=1,sNy
438             DO i=1,sNx
439              gS(i,j,klev,bi,bj) = gS(i,j,klev,bi,bj)
440         &     -1./tauSaltClimRelax3Dim
441         &         *(salt(i,j,klev,bi,bj)-saltStar(i,j,klev,bi,bj))
442         &         *hFacC(i,j,klev,bi,bj)*recip_hFacC(i,j,kLev,bi,bj)
443             ENDDO
444            ENDDO
445           ENDIF
446    #endif
447    
448    #ifdef ALLOW_OBCS
449        IF (useOBCS) THEN        IF (useOBCS) THEN
450         CALL OBCS_SPONGE_S(         CALL OBCS_SPONGE_S(
451       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
452       I           myCurrentTime,myThid)       I           myTime, myThid )
453        ENDIF        ENDIF
454  #endif  #endif
455    

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.35

  ViewVC Help
Powered by ViewVC 1.1.22