/[MITgcm]/MITgcm/pkg/obcs/obcs_init_variables.F
ViewVC logotype

Diff of /MITgcm/pkg/obcs/obcs_init_variables.F

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

revision 1.22 by dimitri, Tue Oct 23 08:25:28 2007 UTC revision 1.30 by mlosch, Sat Oct 3 15:12:09 2009 UTC
# Line 20  C     === Global variables === Line 20  C     === Global variables ===
20  #include "OBCS.h"  #include "OBCS.h"
21  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
22  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
23  #include "PTRACERS.h"  #include "PTRACERS_PARAMS.h"
24    #include "PTRACERS_FIELDS.h"
25  #include "OBCS_PTRACERS.h"  #include "OBCS_PTRACERS.h"
26  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
27    
# Line 33  C     myThid -  Number of this instance Line 34  C     myThid -  Number of this instance
34  C     == Local variables ==  C     == Local variables ==
35        INTEGER bi, bj        INTEGER bi, bj
36        INTEGER I, J, K        INTEGER I, J, K
       CHARACTER*(10) suff  
       INTEGER prec  
37  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
38        INTEGER iTracer        INTEGER iTracer
39  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
# Line 147  C     == Local variables == Line 146  C     == Local variables ==
146           OBNsn0(I,bi,bj)=0. _d 0           OBNsn0(I,bi,bj)=0. _d 0
147           OBNsl1(I,bi,bj)=0. _d 0           OBNsl1(I,bi,bj)=0. _d 0
148           OBNsn1(I,bi,bj)=0. _d 0           OBNsn1(I,bi,bj)=0. _d 0
149             OBNuice (I,bi,bj)=0. _d 0
150             OBNvice (I,bi,bj)=0. _d 0
151             OBNuice0(I,bi,bj)=0. _d 0
152             OBNvice0(I,bi,bj)=0. _d 0
153             OBNuice1(I,bi,bj)=0. _d 0
154             OBNvice1(I,bi,bj)=0. _d 0
155  #endif /* ALLOW_OBCS_NORTH */  #endif /* ALLOW_OBCS_NORTH */
156  #ifdef ALLOW_OBCS_SOUTH  #ifdef ALLOW_OBCS_SOUTH
157           OBSa (I,bi,bj)=0. _d 0           OBSa (I,bi,bj)=0. _d 0
# Line 161  C     == Local variables == Line 166  C     == Local variables ==
166           OBSsn0(I,bi,bj)=0. _d 0           OBSsn0(I,bi,bj)=0. _d 0
167           OBSsl1(I,bi,bj)=0. _d 0           OBSsl1(I,bi,bj)=0. _d 0
168           OBSsn1(I,bi,bj)=0. _d 0           OBSsn1(I,bi,bj)=0. _d 0
169             OBSuice (I,bi,bj)=0. _d 0
170             OBSvice (I,bi,bj)=0. _d 0
171             OBSuice0(I,bi,bj)=0. _d 0
172             OBSvice0(I,bi,bj)=0. _d 0
173             OBSuice1(I,bi,bj)=0. _d 0
174             OBSvice1(I,bi,bj)=0. _d 0
175  #endif /* ALLOW_OBCS_SOUTH */  #endif /* ALLOW_OBCS_SOUTH */
176          ENDDO          ENDDO
177          DO J=1-Oly,sNy+Oly          DO J=1-Oly,sNy+Oly
# Line 171  C     == Local variables == Line 182  C     == Local variables ==
182           OBEh0(J,bi,bj)=0. _d 0           OBEh0(J,bi,bj)=0. _d 0
183           OBEa1(J,bi,bj)=0. _d 0           OBEa1(J,bi,bj)=0. _d 0
184           OBEh1(J,bi,bj)=0. _d 0           OBEh1(J,bi,bj)=0. _d 0
185           OBEsl (I,bi,bj)=0. _d 0           OBEsl (J,bi,bj)=0. _d 0
186           OBEsn (I,bi,bj)=0. _d 0           OBEsn (J,bi,bj)=0. _d 0
187           OBEsl0(I,bi,bj)=0. _d 0           OBEsl0(J,bi,bj)=0. _d 0
188           OBEsn0(I,bi,bj)=0. _d 0           OBEsn0(J,bi,bj)=0. _d 0
189           OBEsl1(I,bi,bj)=0. _d 0           OBEsl1(J,bi,bj)=0. _d 0
190           OBEsn1(I,bi,bj)=0. _d 0           OBEsn1(J,bi,bj)=0. _d 0
191             OBEuice (J,bi,bj)=0. _d 0
192             OBEvice (J,bi,bj)=0. _d 0
193             OBEuice0(J,bi,bj)=0. _d 0
194             OBEvice0(J,bi,bj)=0. _d 0
195             OBEuice1(J,bi,bj)=0. _d 0
196             OBEvice1(J,bi,bj)=0. _d 0
197  #endif /* ALLOW_OBCS_EAST */  #endif /* ALLOW_OBCS_EAST */
198  #ifdef ALLOW_OBCS_WEST  #ifdef ALLOW_OBCS_WEST
199           OBWa (J,bi,bj)=0. _d 0           OBWa (J,bi,bj)=0. _d 0
# Line 185  C     == Local variables == Line 202  C     == Local variables ==
202           OBWh0(J,bi,bj)=0. _d 0           OBWh0(J,bi,bj)=0. _d 0
203           OBWa1(J,bi,bj)=0. _d 0           OBWa1(J,bi,bj)=0. _d 0
204           OBWh1(J,bi,bj)=0. _d 0           OBWh1(J,bi,bj)=0. _d 0
205           OBWsl (I,bi,bj)=0. _d 0           OBWsl (J,bi,bj)=0. _d 0
206           OBWsn (I,bi,bj)=0. _d 0           OBWsn (J,bi,bj)=0. _d 0
207           OBWsl0(I,bi,bj)=0. _d 0           OBWsl0(J,bi,bj)=0. _d 0
208           OBWsn0(I,bi,bj)=0. _d 0           OBWsn0(J,bi,bj)=0. _d 0
209           OBWsl1(I,bi,bj)=0. _d 0           OBWsl1(J,bi,bj)=0. _d 0
210           OBWsn1(I,bi,bj)=0. _d 0           OBWsn1(J,bi,bj)=0. _d 0
211             OBWuice (J,bi,bj)=0. _d 0
212             OBWvice (J,bi,bj)=0. _d 0
213             OBWuice0(J,bi,bj)=0. _d 0
214             OBWvice0(J,bi,bj)=0. _d 0
215             OBWuice1(J,bi,bj)=0. _d 0
216             OBWvice1(J,bi,bj)=0. _d 0
217  #endif /* ALLOW_OBCS_WEST */  #endif /* ALLOW_OBCS_WEST */
218          ENDDO          ENDDO
219  #endif /* ALLOW_SEAICE */  #endif /* ALLOW_SEAICE */
# Line 209  C     == Local variables == Line 232  C     == Local variables ==
232              OBNptr1(I,K,bi,bj,iTracer)=0. _d 0              OBNptr1(I,K,bi,bj,iTracer)=0. _d 0
233  # endif  # endif
234  #endif /* ALLOW_OBCS_NORTH */  #endif /* ALLOW_OBCS_NORTH */
235                
236  #ifdef ALLOW_OBCS_SOUTH  #ifdef ALLOW_OBCS_SOUTH
237              OBSptr (I,K,bi,bj,iTracer)=0. _d 0              OBSptr (I,K,bi,bj,iTracer)=0. _d 0
238  # ifdef ALLOW_OBCS_PRESCRIBE  # ifdef ALLOW_OBCS_PRESCRIBE
# Line 218  C     == Local variables == Line 241  C     == Local variables ==
241  # endif  # endif
242  #endif /* ALLOW_OBCS_SOUTH */  #endif /* ALLOW_OBCS_SOUTH */
243             ENDDO             ENDDO
244              
245             DO J=1-Oly,sNy+Oly             DO J=1-Oly,sNy+Oly
246  #ifdef ALLOW_OBCS_EAST  #ifdef ALLOW_OBCS_EAST
247              OBEptr (J,K,bi,bj,iTracer)=0. _d 0              OBEptr (J,K,bi,bj,iTracer)=0. _d 0
# Line 227  C     == Local variables == Line 250  C     == Local variables ==
250              OBEptr1(J,K,bi,bj,iTracer)=0. _d 0              OBEptr1(J,K,bi,bj,iTracer)=0. _d 0
251  # endif  # endif
252  #endif /* ALLOW_OBCS_EAST */  #endif /* ALLOW_OBCS_EAST */
253                
254  #ifdef ALLOW_OBCS_WEST  #ifdef ALLOW_OBCS_WEST
255              OBWptr (J,K,bi,bj,iTracer)=0. _d 0              OBWptr (J,K,bi,bj,iTracer)=0. _d 0
256  # ifdef ALLOW_OBCS_PRESCRIBE  # ifdef ALLOW_OBCS_PRESCRIBE
# Line 265  C     == Local variables == Line 288  C     == Local variables ==
288  #endif /* ALLOW_ORLANSKI */  #endif /* ALLOW_ORLANSKI */
289    
290         ENDDO         ENDDO
291        ENDDO            ENDDO
292    
293    #ifdef ALLOW_ORLANSKI
294          IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR.
295         &     useOrlanskiEast.OR.useOrlanskiWest) THEN
296  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
297  C jmc: here is the logical place to read OBCS-pickup files  C     Only needed for Orlanski:
298  C      but a) without Orlanski: pass the test 1+1=2 without reading pickup.         IF ( nIter0.NE.0 .OR. pickupSuff.NE.' ' ) THEN
299  C          b) with Orlanski: 1+1=2 fail even with this bit of code          CALL OBCS_READ_PICKUP( nIter0, myThid )
300        IF ( nIter0.NE.0 ) THEN         ENDIF
         prec = precFloat64  
         IF (pickupSuff.EQ.' ') THEN  
          WRITE(suff,'(I10.10)') nIter0  
         ELSE  
          WRITE(suff,'(A10)') pickupSuff  
         ENDIF  
 c       CALL OBCS_READ_CHECKPOINT(prec, nIter0, suff, myThid)  
       ENDIF  
301  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
302          ENDIF
303    #endif /* ALLOW_ORLANSKI */
304    
305  C--   Load/compute OBCS values in all cases, although these values are  C--   Load/compute OBCS values (initial conditions only)
306  C--   only used for initialisation and never for restart:        IF ( startTime .EQ. baseTime .AND.  nIter0 .EQ. 0
307         &     .AND. pickupSuff .EQ. ' ' ) THEN
308  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
309        IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)         IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
310  #endif  #endif
311        DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
312         DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
313          CALL OBCS_CALC( bi, bj, startTime, nIter0,            CALL OBCS_CALC( bi, bj, startTime, nIter0,
314       &        uVel, vVel, wVel, theta, salt, myThid )       &              uVel, vVel, wVel, theta, salt, myThid )
315            ENDDO
316         ENDDO         ENDDO
       ENDDO  
317    
       IF ( startTime .EQ. baseTime .AND.  nIter0 .EQ. 0  
      &     .AND. pickupSuff .EQ. ' ' ) THEN  
318  C--   Apply OBCS values to initial conditions for consistency  C--   Apply OBCS values to initial conditions for consistency
319  C      (but initial conditions only)  C      (but initial conditions only)
320  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
321         IF (debugMode)         IF (debugMode)
322       &      CALL DEBUG_CALL('OBCS_APPLY_UV + OBCS_APPLY_TS',myThid)       &      CALL DEBUG_CALL('OBCS_APPLY_UV + OBCS_APPLY_TS',myThid)
323  #endif  #endif
324         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
# Line 315  C     After applying the boundary condit Line 334  C     After applying the boundary condit
334  C     This is only necessary of the boudnary values have been read  C     This is only necessary of the boudnary values have been read
335  C     from a file.  C     from a file.
336  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
337          IF (debugMode)          IF (debugMode)
338       &       CALL DEBUG_CALL('EXCHANGES in OBCS_INIT_VARIABLES',myThid)       &       CALL DEBUG_CALL('EXCHANGES in OBCS_INIT_VARIABLES',myThid)
339  #endif  #endif
340          CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)          CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
341          _EXCH_XYZ_R8( theta, myThid )          _EXCH_XYZ_RL( theta, myThid )
342          _EXCH_XYZ_R8( salt , myThid )          _EXCH_XYZ_RL( salt , myThid )
343         ENDIF         ENDIF
344  C     endif start from rest  C     endif start from rest
345        ENDIF        ENDIF
# Line 331  C     catch the case when we do start fr Line 350  C     catch the case when we do start fr
350  C     but initialise ptracers differently  C     but initialise ptracers differently
351         IF ( nIter0 .EQ. PTRACERS_Iter0 ) THEN         IF ( nIter0 .EQ. PTRACERS_Iter0 ) THEN
352  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
353          IF (debugMode)          IF (debugMode)
354       &       CALL DEBUG_CALL('OBCS_APPLY_PTRACER',myThid)       &       CALL DEBUG_CALL('OBCS_APPLY_PTRACER',myThid)
355  #endif  #endif
356          DO iTracer=1,PTRACERS_numInUse          DO iTracer=1,PTRACERS_numInUse
357           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
358            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
359             DO K=1,Nr             DO K=1,Nr
360              CALL OBCS_APPLY_PTRACER(              CALL OBCS_APPLY_PTRACER(
361       I           bi, bj, K, iTracer,       I           bi, bj, K, iTracer,
362       U           ptracer(1-Olx,1-Oly,K,bi,bj,iTracer),       U           ptracer(1-Olx,1-Oly,K,bi,bj,iTracer),
363       I           myThid )       I           myThid )
364             ENDDO             ENDDO
# Line 351  C     After applying the boundary condit Line 370  C     After applying the boundary condit
370  C     This is only necessary of the boudnary values have been read  C     This is only necessary of the boudnary values have been read
371  C     from a file.  C     from a file.
372  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
373           IF (debugMode) CALL DEBUG_CALL(           IF (debugMode) CALL DEBUG_CALL(
374       &        'PTRACERS EXCHANGES in OBCS_INIT_VARIABLES',myThid)       &        'PTRACERS EXCHANGES in OBCS_INIT_VARIABLES',myThid)
375  #endif  #endif
376           CALL PTRACERS_FIELDS_BLOCKING_EXCH( myThid )           CALL PTRACERS_FIELDS_BLOCKING_EXCH( myThid )

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.30

  ViewVC Help
Powered by ViewVC 1.1.22