/[MITgcm]/MITgcm/verification/tidal_basin_2d/code/external_forcing.F
ViewVC logotype

Diff of /MITgcm/verification/tidal_basin_2d/code/external_forcing.F

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

revision 1.1 by adcroft, Thu Jan 30 18:33:57 2003 UTC revision 1.6 by jmc, Thu May 3 21:42:15 2007 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
4    #include "PACKAGES_CONFIG.h"
5  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
6    
7  CBOP  CBOP
8  C     !ROUTINE: EXTERNAL_FORCING_U  C     !ROUTINE: EXTERNAL_FORCING_U
9  C     !INTERFACE:  C     !INTERFACE:
10        SUBROUTINE EXTERNAL_FORCING_U(        SUBROUTINE EXTERNAL_FORCING_U(
11       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
12       I           myCurrentTime,myThid)       I           myTime, myThid )
13  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
14  C     *==========================================================*  C     *==========================================================*
15  C     | S/R EXTERNAL_FORCING_U                                      C     | S/R EXTERNAL_FORCING_U
16  C     | o Contains problem specific forcing for zonal velocity.    C     | o Contains problem specific forcing for zonal velocity.
17  C     *==========================================================*  C     *==========================================================*
18  C     | Adds terms to gU for forcing by external sources            C     | Adds terms to gU for forcing by external sources
19  C     | e.g. wind stress, bottom friction etc..................    C     | e.g. wind stress, bottom friction etc ...
20  C     *==========================================================*  C     *==========================================================*
21  C     \ev  C     \ev
22    
# Line 31  C     == Global data == Line 32  C     == Global data ==
32    
33  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
34  C     == Routine arguments ==  C     == Routine arguments ==
35  C     iMin - Working range of tile for applying forcing.  C     iMin,iMax :: Working range of x-index for applying forcing.
36  C     iMax  C     jMin,jMax :: Working range of y-index for applying forcing.
37  C     jMin  C     bi,bj     :: Current tile indices
38  C     jMax  C     kLev      :: Current vertical level index
39  C     kLev  C     myTime    :: Current time in simulation
40    C     myThid    :: Thread Id number
41        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
42        _RL myCurrentTime        _RL myTime
43        INTEGER myThid        INTEGER myThid
44    
45  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
46  C     == Local variables ==  C     == Local variables ==
47  C     Loop counters  C     i,j       :: Loop counters
48        INTEGER I, J  C     kSurface  :: index of surface layer
49  C     number of surface interface layer        INTEGER i, j
50        INTEGER kSurface        INTEGER kSurface
51        _RL tidal_freq,tidal_Hscale        _RL tidal_freq,tidal_Hscale
52        _RL Coord2longitude,longitud1,longitud2        _RL Coord2longitude,longitud1,longitud2
53  CEOP  CEOP
54    
55        if ( buoyancyRelation .eq. 'OCEANICP' ) then        IF ( fluidIsAir ) THEN
56           kSurface = 0
57          ELSEIF ( usingPCoords ) THEN
58         kSurface = Nr         kSurface = Nr
59        else        ELSE
60         kSurface = 1         kSurface = 1
61        endif        ENDIF
62    
63  C--   Forcing term  C--   Forcing term
64    #ifdef ALLOW_AIM
65          IF ( useAIM ) CALL AIM_TENDENCY_APPLY_U(
66         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
67         &                      myTime, myThid )
68    #endif /* ALLOW_AIM */
69    
70    #ifdef ALLOW_FIZHI
71          IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_U(
72         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
73         &                      myTime, myThid )
74    #endif /* ALLOW_FIZHI */
75    
76  C     Add windstress momentum impulse into the top-layer  C     Add windstress momentum impulse into the top-layer
77        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
78         DO j=jMin,jMax  c      DO j=1,sNy
79          DO i=iMin,iMax  C-jmc: Without CD-scheme, this is OK ; but with CD-scheme, needs to cover [0:sNy+1]
80           DO j=0,sNy+1
81            DO i=1,sNx+1
82           gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)           gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
83       &   +foFacMom*surfaceTendencyU(i,j,bi,bj)       &   +foFacMom*surfaceForcingU(i,j,bi,bj)
84       &   *_maskW(i,j,kLev,bi,bj)       &   *recip_drF(kLev)*recip_hFacW(i,j,kLev,bi,bj)
85          ENDDO          ENDDO
86         ENDDO         ENDDO
87        ENDIF        ENDIF
88    
89    
90  C--   Tidal body force: written as gradient of geopotential  C--   Tidal body force: written as gradient of geopotential
91  C True M2 frequency is  C True M2 frequency is
92  c     tidal_freq=2.*pi/(43200.+25.*60.)  c     tidal_freq=2.*pi/(43200.+25.*60.)
93  C But for convenience we are using 12 hour period  C But for convenience we are using 12 hour period
94        tidal_freq=2.*pi/(43200.)        tidal_freq=2.*pi/(43200.)
95  C Make the tide relatively strong (about 1 m)  C Make the tide relatively strong (about 1 m)
96        tidal_Hscale=100.        tidal_Hscale=10.
97        IF ( usingCartesianGrid ) THEN        IF ( usingCartesianGrid ) THEN
98         Coord2longitude=1./rSphere         Coord2longitude=1./rSphere
99        ELSEIF ( usingSphericalPolarGrid ) THEN        ELSEIF ( usingSphericalPolarGrid ) THEN
# Line 82  C Make the tide relatively strong (about Line 101  C Make the tide relatively strong (about
101        ELSE        ELSE
102         STOP 'Be careful about 2D!'         STOP 'Be careful about 2D!'
103        ENDIF        ENDIF
104        DO j=jMin,jMax        DO j=0,sNy+1
105         DO i=iMin+1,iMax         DO i=1,sNx+1
106           longitud1=XC(i-1,j,bi,bj)*Coord2longitude           longitud1=XC(i-1,j,bi,bj)*Coord2longitude
107           longitud2=XC(i,j,bi,bj)*Coord2longitude           longitud2=XC(i,j,bi,bj)*Coord2longitude
108           gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)           gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
109       &   +gravity*tidal_Hscale*       &   +gravity*tidal_Hscale*
110       &    ( SIN( tidal_freq*myCurrentTime +longitud2 )       &    ( SIN( tidal_freq*myTime + 2.*longitud2 )
111       &     -SIN( tidal_freq*myCurrentTime +longitud1 )       &     -SIN( tidal_freq*myTime + 2.*longitud1 )
112       &    )*recip_DXC(i,j,bi,bj)       &    )*recip_DXC(i,j,bi,bj)
113       &   *_maskW(i,j,kLev,bi,bj)       &   *_maskW(i,j,kLev,bi,bj)
114    c    &   *min( myTime/86400. , 1.)
115         ENDDO         ENDDO
116        ENDDO        ENDDO
117    
118  #if (defined (ALLOW_OBCS) && defined (ALLOW_OBCS_SPONGE))  #if (defined (ALLOW_TAU_EDDY))
119           CALL TAUEDDY_EXTERNAL_FORCING_U(
120         I           iMin,iMax, jMin,jMax, bi,bj, kLev,
121         I           myTime, myThid )
122    #endif
123    
124    #ifdef ALLOW_OBCS
125        IF (useOBCS) THEN        IF (useOBCS) THEN
126         CALL OBCS_SPONGE_U(         CALL OBCS_SPONGE_U(
127       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
128       I           myCurrentTime,myThid)       I           myTime, myThid )
129        ENDIF        ENDIF
130  #endif  #endif
131    
132        RETURN        RETURN
133        END        END
134    
135    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
136  CBOP  CBOP
137  C     !ROUTINE: EXTERNAL_FORCING_V  C     !ROUTINE: EXTERNAL_FORCING_V
138  C     !INTERFACE:  C     !INTERFACE:
139        SUBROUTINE EXTERNAL_FORCING_V(        SUBROUTINE EXTERNAL_FORCING_V(
140       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
141       I           myCurrentTime,myThid)       I           myTime, myThid )
142  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
143  C     *==========================================================*  C     *==========================================================*
144  C     | S/R EXTERNAL_FORCING_V                                      C     | S/R EXTERNAL_FORCING_V
145  C     | o Contains problem specific forcing for merid velocity.    C     | o Contains problem specific forcing for merid velocity.
146  C     *==========================================================*  C     *==========================================================*
147  C     | Adds terms to gV for forcing by external sources            C     | Adds terms to gV for forcing by external sources
148  C     | e.g. wind stress, bottom friction etc..................    C     | e.g. wind stress, bottom friction etc ...
149  C     *==========================================================*  C     *==========================================================*
150  C     \ev  C     \ev
151    
# Line 133  C     == Global data == Line 161  C     == Global data ==
161    
162  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
163  C     == Routine arguments ==  C     == Routine arguments ==
164  C     iMin - Working range of tile for applying forcing.  C     iMin,iMax :: Working range of x-index for applying forcing.
165  C     iMax  C     jMin,jMax :: Working range of y-index for applying forcing.
166  C     jMin  C     bi,bj     :: Current tile indices
167  C     jMax  C     kLev      :: Current vertical level index
168  C     kLev  C     myTime    :: Current time in simulation
169    C     myThid    :: Thread Id number
170        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
171        _RL myCurrentTime        _RL myTime
172        INTEGER myThid        INTEGER myThid
173    
174  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
175  C     == Local variables ==  C     == Local variables ==
176  C     Loop counters  C     i,j       :: Loop counters
177        INTEGER I, J  C     kSurface  :: index of surface layer
178  C     number of surface interface layer        INTEGER i, j
179        INTEGER kSurface        INTEGER kSurface
180  CEOP  CEOP
181    
182        if ( buoyancyRelation .eq. 'OCEANICP' ) then        IF ( fluidIsAir ) THEN
183           kSurface = 0
184          ELSEIF ( usingPCoords ) THEN
185         kSurface = Nr         kSurface = Nr
186        else        ELSE
187         kSurface = 1         kSurface = 1
188        endif        ENDIF
189    
190  C--   Forcing term  C--   Forcing term
191    #ifdef ALLOW_AIM
192          IF ( useAIM ) CALL AIM_TENDENCY_APPLY_V(
193         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
194         &                      myTime, myThid )
195    #endif /* ALLOW_AIM */
196    
197    #ifdef ALLOW_FIZHI
198          IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_V(
199         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
200         &                      myTime, myThid )
201    #endif /* ALLOW_FIZHI */
202    
203  C     Add windstress momentum impulse into the top-layer  C     Add windstress momentum impulse into the top-layer
204        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
205         DO j=jMin,jMax         DO j=1,sNy+1
206          DO i=iMin,iMax  c       DO i=1,sNx
207    C-jmc: Without CD-scheme, this is OK ; but with CD-scheme, needs to cover [0:sNx+1]
208            DO i=0,sNx+1
209           gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)           gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
210       &   +foFacMom*surfaceTendencyV(i,j,bi,bj)       &   +foFacMom*surfaceForcingV(i,j,bi,bj)
211       &   *_maskS(i,j,kLev,bi,bj)       &   *recip_drF(kLev)*recip_hFacS(i,j,kLev,bi,bj)
212          ENDDO          ENDDO
213         ENDDO         ENDDO
214        ENDIF        ENDIF
215    
216  #if (defined (ALLOW_OBCS) && defined (ALLOW_OBCS_SPONGE))  #if (defined (ALLOW_TAU_EDDY))
217           CALL TAUEDDY_EXTERNAL_FORCING_V(
218         I           iMin,iMax, jMin,jMax, bi,bj, kLev,
219         I           myTime, myThid )
220    #endif
221    
222    #ifdef ALLOW_OBCS
223        IF (useOBCS) THEN        IF (useOBCS) THEN
224         CALL OBCS_SPONGE_V(         CALL OBCS_SPONGE_V(
225       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
226       I           myCurrentTime,myThid)       I           myTime, myThid )
227        ENDIF        ENDIF
228  #endif  #endif
229    
230        RETURN        RETURN
231        END        END
232    
233    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
234  CBOP  CBOP
235  C     !ROUTINE: EXTERNAL_FORCING_T  C     !ROUTINE: EXTERNAL_FORCING_T
236  C     !INTERFACE:  C     !INTERFACE:
237        SUBROUTINE EXTERNAL_FORCING_T(        SUBROUTINE EXTERNAL_FORCING_T(
238       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
239       I           myCurrentTime,myThid)       I           myTime, myThid )
240  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
241  C     *==========================================================*  C     *==========================================================*
242  C     | S/R EXTERNAL_FORCING_T                                      C     | S/R EXTERNAL_FORCING_T
243  C     | o Contains problem specific forcing for temperature.        C     | o Contains problem specific forcing for temperature.
244  C     *==========================================================*  C     *==========================================================*
245  C     | Adds terms to gT for forcing by external sources            C     | Adds terms to gT for forcing by external sources
246  C     | e.g. heat flux, climatalogical relaxation..............    C     | e.g. heat flux, climatalogical relaxation, etc ...
247  C     *==========================================================*  C     *==========================================================*
248  C     \ev  C     \ev
249    
# Line 203  C     == Global data == Line 256  C     == Global data ==
256  #include "GRID.h"  #include "GRID.h"
257  #include "DYNVARS.h"  #include "DYNVARS.h"
258  #include "FFIELDS.h"  #include "FFIELDS.h"
 #ifdef SHORTWAVE_HEATING  
       integer two  
       _RL minusone  
       parameter (two=2,minusone=-1.)  
       _RL swfracb(two)  
 #endif  
259    
260  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
261  C     == Routine arguments ==  C     == Routine arguments ==
262  C     iMin - Working range of tile for applying forcing.  C     iMin,iMax :: Working range of x-index for applying forcing.
263  C     iMax  C     jMin,jMax :: Working range of y-index for applying forcing.
264  C     jMin  C     bi,bj     :: Current tile indices
265  C     jMax  C     kLev      :: Current vertical level index
266  C     kLev  C     myTime    :: Current time in simulation
267    C     myThid    :: Thread Id number
268        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
269        _RL myCurrentTime        _RL myTime
270        INTEGER myThid        INTEGER myThid
 CEndOfInterface  
271    
272  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
273  C     == Local variables ==  C     == Local variables ==
274  C     Loop counters  C     i,j       :: Loop counters
275        INTEGER I, J  C     kSurface  :: index of surface layer
276  C     number of surface interface layer        INTEGER i, j
277        INTEGER kSurface        INTEGER kSurface
278  CEOP  CEOP
279    #ifdef SHORTWAVE_HEATING
280          integer two
281          _RL minusone
282          parameter (two=2,minusone=-1.)
283          _RL swfracb(two)
284          INTEGER kp1
285    #endif
286    
287        if ( buoyancyRelation .eq. 'OCEANICP' ) then        IF ( fluidIsAir ) THEN
288           kSurface = 0
289          ELSEIF ( usingPCoords ) THEN
290         kSurface = Nr         kSurface = Nr
291        else        ELSE
292         kSurface = 1         kSurface = 1
293        endif        ENDIF
294    
295  C--   Forcing term  C--   Forcing term
296    #ifdef ALLOW_AIM
297          IF ( useAIM ) CALL AIM_TENDENCY_APPLY_T(
298         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
299         &                      myTime, myThid )
300    #endif /* ALLOW_AIM */
301    
302    #ifdef ALLOW_FIZHI
303          IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_T(
304         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
305         &                      myTime, myThid )
306    #endif /* ALLOW_FIZHI */
307    
308  C     Add heat in top-layer  C     Add heat in top-layer
309        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
310         DO j=jMin,jMax         DO j=1,sNy
311          DO i=iMin,iMax          DO i=1,sNx
312           gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)           gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
313       &     +maskC(i,j,kLev,bi,bj)*surfaceTendencyT(i,j,bi,bj)       &     +surfaceForcingT(i,j,bi,bj)
314         &     *recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)
315          ENDDO          ENDDO
316         ENDDO         ENDDO
317        ENDIF        ENDIF
318    
319  #ifdef SHORTWAVE_HEATING  #ifdef SHORTWAVE_HEATING
320  C Penetrating SW radiation  C Penetrating SW radiation
321        swfracb(1)=abs(rF(klev))  c     IF ( usePenetratingSW ) THEN
322        swfracb(2)=abs(rF(klev+1))         swfracb(1)=abs(rF(klev))
323        call SWFRAC(         swfracb(2)=abs(rF(klev+1))
324       I     two,minusone,         CALL SWFRAC(
325       I     myCurrentTime,myThid,       I             two, minusone,
326       O     swfracb)       U             swfracb,
327        DO j=jMin,jMax       I             myTime, 1, myThid )
328         DO i=iMin,iMax         kp1 = klev+1
329          gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)         IF (klev.EQ.Nr) THEN
330       &   -maskC(i,j,klev,bi,bj)*Qsw(i,j,bi,bj)*(swfracb(1)-swfracb(2))          kp1 = klev
331       &    *recip_Cp*recip_rhoConst*recip_drF(klev)          swfracb(2)=0. _d 0
332           ENDIF
333           DO j=1,sNy
334            DO i=1,sNx
335             gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)
336         &   -Qsw(i,j,bi,bj)*(swfracb(1)*maskC(i,j,klev,bi,bj)
337         &                   -swfracb(2)*maskC(i,j,kp1, bi,bj))
338         &    *recip_Cp*recip_rhoConst
339         &    *recip_drF(klev)*recip_hFacC(i,j,kLev,bi,bj)
340            ENDDO
341         ENDDO         ENDDO
342        ENDDO  c     ENDIF
343  #endif  #endif
344    
345  #if (defined (ALLOW_OBCS) && defined (ALLOW_OBCS_SPONGE))  #ifdef ALLOW_OBCS
346        IF (useOBCS) THEN        IF (useOBCS) THEN
347         CALL OBCS_SPONGE_T(         CALL OBCS_SPONGE_T(
348       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
349       I           myCurrentTime,myThid)       I           myTime, myThid )
350        ENDIF        ENDIF
351  #endif  #endif
352    
353        RETURN        RETURN
354        END        END
355    
356    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
357  CBOP  CBOP
358  C     !ROUTINE: EXTERNAL_FORCING_S  C     !ROUTINE: EXTERNAL_FORCING_S
359  C     !INTERFACE:  C     !INTERFACE:
360        SUBROUTINE EXTERNAL_FORCING_S(        SUBROUTINE EXTERNAL_FORCING_S(
361       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
362       I           myCurrentTime,myThid)       I           myTime, myThid )
363    
364  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
365  C     *==========================================================*  C     *==========================================================*
366  C     | S/R EXTERNAL_FORCING_S                                      C     | S/R EXTERNAL_FORCING_S
367  C     | o Contains problem specific forcing for merid velocity.    C     | o Contains problem specific forcing for merid velocity.
368  C     *==========================================================*  C     *==========================================================*
369  C     | Adds terms to gS for forcing by external sources            C     | Adds terms to gS for forcing by external sources
370  C     | e.g. fresh-water flux, climatalogical relaxation.......    C     | e.g. fresh-water flux, climatalogical relaxation, etc ...
371  C     *==========================================================*  C     *==========================================================*
372  C     \ev  C     \ev
373    
# Line 303  C     == Global data == Line 383  C     == Global data ==
383    
384  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
385  C     == Routine arguments ==  C     == Routine arguments ==
386  C     iMin - Working range of tile for applying forcing.  C     iMin,iMax :: Working range of x-index for applying forcing.
387  C     iMax  C     jMin,jMax :: Working range of y-index for applying forcing.
388  C     jMin  C     bi,bj     :: Current tile indices
389  C     jMax  C     kLev      :: Current vertical level index
390  C     kLev  C     myTime    :: Current time in simulation
391    C     myThid    :: Thread Id number
392        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj        INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
393        _RL myCurrentTime        _RL myTime
394        INTEGER myThid        INTEGER myThid
395    
396  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
397  C     == Local variables ==  C     == Local variables ==
398  C     Loop counters  C     i,j       :: Loop counters
399        INTEGER I, J  C     kSurface  :: index of surface layer
400  C     number of surface interface layer        INTEGER i, j
401        INTEGER kSurface        INTEGER kSurface
402  CEOP  CEOP
403    
404        if ( buoyancyRelation .eq. 'OCEANICP' ) then        IF ( fluidIsAir ) THEN
405           kSurface = 0
406          ELSEIF ( usingPCoords ) THEN
407         kSurface = Nr         kSurface = Nr
408        else        ELSE
409         kSurface = 1         kSurface = 1
410        endif        ENDIF
   
411    
412  C--   Forcing term  C--   Forcing term
413    #ifdef ALLOW_AIM
414          IF ( useAIM ) CALL AIM_TENDENCY_APPLY_S(
415         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
416         &                      myTime, myThid )
417    #endif /* ALLOW_AIM */
418    
419    #ifdef ALLOW_FIZHI
420          IF ( useFIZHI ) CALL FIZHI_TENDENCY_APPLY_S(
421         &                      iMin,iMax, jMin,jMax, bi,bj, kLev,
422         &                      myTime, myThid )
423    #endif /* ALLOW_FIZHI */
424    
425  C     Add fresh-water in top-layer  C     Add fresh-water in top-layer
426        IF ( kLev .EQ. kSurface ) THEN        IF ( kLev .EQ. kSurface ) THEN
427         DO j=jMin,jMax         DO j=1,sNy
428          DO i=iMin,iMax          DO i=1,sNx
429           gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)           gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
430       &   +maskC(i,j,kLev,bi,bj)*surfaceTendencyS(i,j,bi,bj)       &     +surfaceForcingS(i,j,bi,bj)
431         &     *recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)
432          ENDDO          ENDDO
433         ENDDO         ENDDO
434        ENDIF        ENDIF
435    
436  #if (defined (ALLOW_OBCS) && defined (ALLOW_OBCS_SPONGE))  #ifdef ALLOW_OBCS
437        IF (useOBCS) THEN        IF (useOBCS) THEN
438         CALL OBCS_SPONGE_S(         CALL OBCS_SPONGE_S(
439       I           iMin, iMax, jMin, jMax,bi,bj,kLev,       I           iMin,iMax, jMin,jMax, bi,bj, kLev,
440       I           myCurrentTime,myThid)       I           myTime, myThid )
441        ENDIF        ENDIF
442  #endif  #endif
443    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22