/[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.6 by jmc, Fri Feb 8 22:16:09 2002 UTC revision 1.44 by dimitri, Thu Nov 15 20:46:52 2012 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "OBCS_OPTIONS.h"  #include "OBCS_OPTIONS.h"
5    
6    CBOP
7    C     !ROUTINE: OBCS_INIT_VARIABLES
8    C     !INTERFACE:
9        SUBROUTINE OBCS_INIT_VARIABLES( myThid )        SUBROUTINE OBCS_INIT_VARIABLES( myThid )
 C     /==========================================================\  
 C     | SUBROUTINE OBCS_INIT_VARIABLES                           |  
 C     | o Initialise OBCs variable data                          |  
 C     |==========================================================|  
 C     |                                                          |  
 C     \==========================================================/  
       IMPLICIT NONE  
10    
11    C     !DESCRIPTION:
12    C     *==========================================================*
13    C     | SUBROUTINE OBCS_INIT_VARIABLES
14    C     | o Initialise OBCs variable data
15    C     *==========================================================*
16    C     *==========================================================*
17    
18    C     !USES:
19          IMPLICIT NONE
20  C     === Global variables ===  C     === Global variables ===
21  #include "SIZE.h"  #include "SIZE.h"
22  #include "EEPARAMS.h"  #include "EEPARAMS.h"
23  #include "PARAMS.h"  #include "PARAMS.h"
24  #include "DYNVARS.h"  #include "DYNVARS.h"
25  #include "OBCS.h"  #include "OBCS_PARAMS.h"
26    c#include "OBCS_GRID.h"
27    #include "OBCS_FIELDS.h"
28    #include "OBCS_SEAICE.h"
29    #ifdef ALLOW_PTRACERS
30    #include "PTRACERS_SIZE.h"
31    #include "PTRACERS_PARAMS.h"
32    #include "PTRACERS_FIELDS.h"
33    #include "OBCS_PTRACERS.h"
34    #endif /* ALLOW_PTRACERS */
35    
36    C     !INPUT/OUTPUT PARAMETERS:
37  C     == Routine arguments ==  C     == Routine arguments ==
38  C     myThid -  Number of this instance of INI_DEPTHS  C     myThid :: my Thread Id Number
39        INTEGER myThid        INTEGER myThid
40    CEOP
41    
42  #ifdef ALLOW_OBCS  #ifdef ALLOW_OBCS
43    
44    C     !LOCAL VARIABLES:
45  C     == Local variables ==  C     == Local variables ==
46        INTEGER bi, bj        INTEGER bi, bj
47        INTEGER I, J, K        INTEGER i, j, k
48          INTEGER fp
49    #ifdef ALLOW_PTRACERS
50          INTEGER iTracer
51    #endif /* ALLOW_PTRACERS */
52    
53    #ifdef ALLOW_DEBUG
54          IF (debugMode) CALL DEBUG_ENTER('OBCS_INIT_VARIABLES',myThid)
55    #endif
56    
57          fp = readBinaryPrec
58    
59        DO bj = myByLo(myThid), myByHi(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
60         DO bi = myBxLo(myThid), myBxHi(myThid)         DO bi = myBxLo(myThid), myBxHi(myThid)
61    
62          DO K=1,Nr  #ifdef ALLOW_OBCS_PRESCRIBE
63           DO I=1-Olx,sNx+Olx          OBCS_ldRec(bi,bj) = 0
           OBNu(I,K,bi,bj)=0.  
           OBNv(I,K,bi,bj)=0.  
           OBNt(I,K,bi,bj)=0.  
           OBNs(I,K,bi,bj)=0.  
           OBSu(I,K,bi,bj)=0.  
           OBSv(I,K,bi,bj)=0.  
           OBSt(I,K,bi,bj)=0.  
           OBSs(I,K,bi,bj)=0.  
 #ifdef ALLOW_NONHYDROSTATIC  
           OBNw(I,K,bi,bj)=0.  
           OBSw(I,K,bi,bj)=0.  
64  #endif  #endif
65            DO k=1,Nr
66             DO i=1-Olx,sNx+Olx
67    #ifdef ALLOW_OBCS_NORTH
68              OBNu(i,k,bi,bj)=0. _d 0
69              OBNv(i,k,bi,bj)=0. _d 0
70              OBNt(i,k,bi,bj)=0. _d 0
71              OBNs(i,k,bi,bj)=0. _d 0
72    # ifdef ALLOW_OBCS_PRESCRIBE
73              OBNu0(i,k,bi,bj)=0. _d 0
74              OBNv0(i,k,bi,bj)=0. _d 0
75              OBNt0(i,k,bi,bj)=0. _d 0
76              OBNs0(i,k,bi,bj)=0. _d 0
77              OBNu1(i,k,bi,bj)=0. _d 0
78              OBNv1(i,k,bi,bj)=0. _d 0
79              OBNt1(i,k,bi,bj)=0. _d 0
80              OBNs1(i,k,bi,bj)=0. _d 0
81    # endif
82    # ifdef ALLOW_OBCS_STEVENS
83              OBNvStevens(i,k,bi,bj)=0. _d 0
84              OBNtStevens(i,k,bi,bj)=0. _d 0
85              OBNsStevens(i,k,bi,bj)=0. _d 0
86    # endif /* ALLOW_OBCS_STEVENS */
87    #endif /* ALLOW_OBCS_NORTH */
88    
89    #ifdef ALLOW_OBCS_SOUTH
90              OBSu(i,k,bi,bj)=0. _d 0
91              OBSv(i,k,bi,bj)=0. _d 0
92              OBSt(i,k,bi,bj)=0. _d 0
93              OBSs(i,k,bi,bj)=0. _d 0
94    # ifdef ALLOW_OBCS_PRESCRIBE
95              OBSu0(i,k,bi,bj)=0. _d 0
96              OBSv0(i,k,bi,bj)=0. _d 0
97              OBSt0(i,k,bi,bj)=0. _d 0
98              OBSs0(i,k,bi,bj)=0. _d 0
99              OBSu1(i,k,bi,bj)=0. _d 0
100              OBSv1(i,k,bi,bj)=0. _d 0
101              OBSt1(i,k,bi,bj)=0. _d 0
102              OBSs1(i,k,bi,bj)=0. _d 0
103    # endif
104    # ifdef ALLOW_OBCS_STEVENS
105              OBSvStevens(i,k,bi,bj)=0. _d 0
106              OBStStevens(i,k,bi,bj)=0. _d 0
107              OBSsStevens(i,k,bi,bj)=0. _d 0
108    # endif /* ALLOW_OBCS_STEVENS */
109    #endif /* ALLOW_OBCS_SOUTH */
110             ENDDO
111    
112             DO j=1-Oly,sNy+Oly
113    #ifdef ALLOW_OBCS_EAST
114              OBEu(j,k,bi,bj)=0. _d 0
115              OBEv(j,k,bi,bj)=0. _d 0
116              OBEt(j,k,bi,bj)=0. _d 0
117              OBEs(j,k,bi,bj)=0. _d 0
118    # ifdef ALLOW_OBCS_PRESCRIBE
119              OBEu0(j,k,bi,bj)=0. _d 0
120              OBEv0(j,k,bi,bj)=0. _d 0
121              OBEt0(j,k,bi,bj)=0. _d 0
122              OBEs0(j,k,bi,bj)=0. _d 0
123              OBEu1(j,k,bi,bj)=0. _d 0
124              OBEv1(j,k,bi,bj)=0. _d 0
125              OBEt1(j,k,bi,bj)=0. _d 0
126              OBEs1(j,k,bi,bj)=0. _d 0
127    # endif
128    # ifdef ALLOW_OBCS_STEVENS
129              OBEuStevens(j,k,bi,bj)=0. _d 0
130              OBEtStevens(j,k,bi,bj)=0. _d 0
131              OBEsStevens(j,k,bi,bj)=0. _d 0
132    # endif /* ALLOW_OBCS_STEVENS */
133    #endif /* ALLOW_OBCS_EAST */
134    
135    #ifdef ALLOW_OBCS_WEST
136              OBWu(j,k,bi,bj)=0. _d 0
137              OBWv(j,k,bi,bj)=0. _d 0
138              OBWt(j,k,bi,bj)=0. _d 0
139              OBWs(j,k,bi,bj)=0. _d 0
140    # ifdef ALLOW_OBCS_PRESCRIBE
141              OBWu0(j,k,bi,bj)=0. _d 0
142              OBWv0(j,k,bi,bj)=0. _d 0
143              OBWt0(j,k,bi,bj)=0. _d 0
144              OBWs0(j,k,bi,bj)=0. _d 0
145              OBWu1(j,k,bi,bj)=0. _d 0
146              OBWv1(j,k,bi,bj)=0. _d 0
147              OBWt1(j,k,bi,bj)=0. _d 0
148              OBWs1(j,k,bi,bj)=0. _d 0
149    # endif
150    # ifdef ALLOW_OBCS_STEVENS
151              OBWuStevens(j,k,bi,bj)=0. _d 0
152              OBWtStevens(j,k,bi,bj)=0. _d 0
153              OBWsStevens(j,k,bi,bj)=0. _d 0
154    # endif /* ALLOW_OBCS_STEVENS */
155    #endif /* ALLOW_OBCS_WEST */
156           ENDDO           ENDDO
157           DO J=1-Oly,sNy+Oly          ENDDO
158            OBEu(J,K,bi,bj)=0.  
           OBEv(J,K,bi,bj)=0.  
           OBEt(J,K,bi,bj)=0.  
           OBEs(J,K,bi,bj)=0.  
           OBWu(J,K,bi,bj)=0.  
           OBWv(J,K,bi,bj)=0.  
           OBWt(J,K,bi,bj)=0.  
           OBWs(J,K,bi,bj)=0.  
159  #ifdef ALLOW_NONHYDROSTATIC  #ifdef ALLOW_NONHYDROSTATIC
160            OBEw(J,K,bi,bj)=0.          DO k=1,Nr
161            OBWw(J,K,bi,bj)=0.           DO i=1-Olx,sNx+Olx
162  #endif            OBNw (i,k,bi,bj) = 0. _d 0
163              OBSw (i,k,bi,bj) = 0. _d 0
164    # ifdef ALLOW_OBCS_PRESCRIBE
165              OBNw0(i,k,bi,bj) = 0. _d 0
166              OBSw0(i,k,bi,bj) = 0. _d 0
167              OBNw1(i,k,bi,bj) = 0. _d 0
168              OBSw1(i,k,bi,bj) = 0. _d 0
169    # endif
170             ENDDO
171             DO j=1-Oly,sNy+Oly
172              OBEw (j,k,bi,bj) = 0. _d 0
173              OBWw (j,k,bi,bj) = 0. _d 0
174    # ifdef ALLOW_OBCS_PRESCRIBE
175              OBEw0(j,k,bi,bj) = 0. _d 0
176              OBWw0(j,k,bi,bj) = 0. _d 0
177              OBEw1(j,k,bi,bj) = 0. _d 0
178              OBWw1(j,k,bi,bj) = 0. _d 0
179    # endif
180           ENDDO           ENDDO
181          ENDDO          ENDDO
182    #endif /* ALLOW_NONHYDROSTATIC */
183    
184  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
185          DO I=1-Olx,sNx+Olx          DO i=1-Olx,sNx+Olx
186            OBNeta(I,bi,bj)=0.            OBNeta (i,bi,bj) = 0. _d 0
187            OBSeta(I,bi,bj)=0.            OBSeta (i,bi,bj) = 0. _d 0
188          ENDDO  # ifdef ALLOW_OBCS_PRESCRIBE
189          DO J=1-Oly,sNy+Oly            OBNeta0(i,bi,bj) = 0. _d 0
190            OBEeta(J,bi,bj)=0.            OBSeta0(i,bi,bj) = 0. _d 0
191            OBWeta(J,bi,bj)=0.            OBNeta1(i,bi,bj) = 0. _d 0
192              OBSeta1(i,bi,bj) = 0. _d 0
193    # endif
194            ENDDO
195            DO j=1-Oly,sNy+Oly
196              OBEeta (j,bi,bj) = 0. _d 0
197              OBWeta (j,bi,bj) = 0. _d 0
198    # ifdef ALLOW_OBCS_PRESCRIBE
199              OBEeta0(j,bi,bj) = 0. _d 0
200              OBWeta0(j,bi,bj) = 0. _d 0
201              OBEeta1(j,bi,bj) = 0. _d 0
202              OBWeta1(j,bi,bj) = 0. _d 0
203    # endif
204          ENDDO          ENDDO
205  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
206    
207    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
208    
209    #ifdef ALLOW_SEAICE
210            DO i=1-Olx,sNx+Olx
211    #ifdef ALLOW_OBCS_NORTH
212             OBNa (i,bi,bj)=0. _d 0
213             OBNh (i,bi,bj)=0. _d 0
214             OBNa0(i,bi,bj)=0. _d 0
215             OBNh0(i,bi,bj)=0. _d 0
216             OBNa1(i,bi,bj)=0. _d 0
217             OBNh1(i,bi,bj)=0. _d 0
218             OBNsl (i,bi,bj)=0. _d 0
219             OBNsn (i,bi,bj)=0. _d 0
220             OBNsl0(i,bi,bj)=0. _d 0
221             OBNsn0(i,bi,bj)=0. _d 0
222             OBNsl1(i,bi,bj)=0. _d 0
223             OBNsn1(i,bi,bj)=0. _d 0
224             OBNuice (i,bi,bj)=0. _d 0
225             OBNvice (i,bi,bj)=0. _d 0
226             OBNuice0(i,bi,bj)=0. _d 0
227             OBNvice0(i,bi,bj)=0. _d 0
228             OBNuice1(i,bi,bj)=0. _d 0
229             OBNvice1(i,bi,bj)=0. _d 0
230    #endif /* ALLOW_OBCS_NORTH */
231    #ifdef ALLOW_OBCS_SOUTH
232             OBSa (i,bi,bj)=0. _d 0
233             OBSh (i,bi,bj)=0. _d 0
234             OBSa0(i,bi,bj)=0. _d 0
235             OBSh0(i,bi,bj)=0. _d 0
236             OBSa1(i,bi,bj)=0. _d 0
237             OBSh1(i,bi,bj)=0. _d 0
238             OBSsl (i,bi,bj)=0. _d 0
239             OBSsn (i,bi,bj)=0. _d 0
240             OBSsl0(i,bi,bj)=0. _d 0
241             OBSsn0(i,bi,bj)=0. _d 0
242             OBSsl1(i,bi,bj)=0. _d 0
243             OBSsn1(i,bi,bj)=0. _d 0
244             OBSuice (i,bi,bj)=0. _d 0
245             OBSvice (i,bi,bj)=0. _d 0
246             OBSuice0(i,bi,bj)=0. _d 0
247             OBSvice0(i,bi,bj)=0. _d 0
248             OBSuice1(i,bi,bj)=0. _d 0
249             OBSvice1(i,bi,bj)=0. _d 0
250    #endif /* ALLOW_OBCS_SOUTH */
251            ENDDO
252            DO j=1-Oly,sNy+Oly
253    #ifdef ALLOW_OBCS_EAST
254             OBEa (j,bi,bj)=0. _d 0
255             OBEh (j,bi,bj)=0. _d 0
256             OBEa0(j,bi,bj)=0. _d 0
257             OBEh0(j,bi,bj)=0. _d 0
258             OBEa1(j,bi,bj)=0. _d 0
259             OBEh1(j,bi,bj)=0. _d 0
260             OBEsl (j,bi,bj)=0. _d 0
261             OBEsn (j,bi,bj)=0. _d 0
262             OBEsl0(j,bi,bj)=0. _d 0
263             OBEsn0(j,bi,bj)=0. _d 0
264             OBEsl1(j,bi,bj)=0. _d 0
265             OBEsn1(j,bi,bj)=0. _d 0
266             OBEuice (j,bi,bj)=0. _d 0
267             OBEvice (j,bi,bj)=0. _d 0
268             OBEuice0(j,bi,bj)=0. _d 0
269             OBEvice0(j,bi,bj)=0. _d 0
270             OBEuice1(j,bi,bj)=0. _d 0
271             OBEvice1(j,bi,bj)=0. _d 0
272    #endif /* ALLOW_OBCS_EAST */
273    #ifdef ALLOW_OBCS_WEST
274             OBWa (j,bi,bj)=0. _d 0
275             OBWh (j,bi,bj)=0. _d 0
276             OBWa0(j,bi,bj)=0. _d 0
277             OBWh0(j,bi,bj)=0. _d 0
278             OBWa1(j,bi,bj)=0. _d 0
279             OBWh1(j,bi,bj)=0. _d 0
280             OBWsl (j,bi,bj)=0. _d 0
281             OBWsn (j,bi,bj)=0. _d 0
282             OBWsl0(j,bi,bj)=0. _d 0
283             OBWsn0(j,bi,bj)=0. _d 0
284             OBWsl1(j,bi,bj)=0. _d 0
285             OBWsn1(j,bi,bj)=0. _d 0
286             OBWuice (j,bi,bj)=0. _d 0
287             OBWvice (j,bi,bj)=0. _d 0
288             OBWuice0(j,bi,bj)=0. _d 0
289             OBWvice0(j,bi,bj)=0. _d 0
290             OBWuice1(j,bi,bj)=0. _d 0
291             OBWvice1(j,bi,bj)=0. _d 0
292    #endif /* ALLOW_OBCS_WEST */
293            ENDDO
294    #endif /* ALLOW_SEAICE */
295    
296    #ifdef ALLOW_PTRACERS
297    #ifndef ALLOW_AUTODIFF_TAMC
298            IF ( usePTRACERS ) THEN
299    #endif
300             DO iTracer=1,PTRACERS_numInUse
301              DO k=1,Nr
302               DO i=1-Olx,sNx+Olx
303    #ifdef ALLOW_OBCS_NORTH
304                OBNptr (i,k,bi,bj,iTracer)=0. _d 0
305    # ifdef ALLOW_OBCS_PRESCRIBE
306                OBNptr0(i,k,bi,bj,iTracer)=0. _d 0
307                OBNptr1(i,k,bi,bj,iTracer)=0. _d 0
308    # endif
309    #endif /* ALLOW_OBCS_NORTH */
310    
311    #ifdef ALLOW_OBCS_SOUTH
312                OBSptr (i,k,bi,bj,iTracer)=0. _d 0
313    # ifdef ALLOW_OBCS_PRESCRIBE
314                OBSptr0(i,k,bi,bj,iTracer)=0. _d 0
315                OBSptr1(i,k,bi,bj,iTracer)=0. _d 0
316    # endif
317    #endif /* ALLOW_OBCS_SOUTH */
318               ENDDO
319    
320               DO j=1-Oly,sNy+Oly
321    #ifdef ALLOW_OBCS_EAST
322                OBEptr (j,k,bi,bj,iTracer)=0. _d 0
323    # ifdef ALLOW_OBCS_PRESCRIBE
324                OBEptr0(j,k,bi,bj,iTracer)=0. _d 0
325                OBEptr1(j,k,bi,bj,iTracer)=0. _d 0
326    # endif
327    #endif /* ALLOW_OBCS_EAST */
328    
329    #ifdef ALLOW_OBCS_WEST
330                OBWptr (j,k,bi,bj,iTracer)=0. _d 0
331    # ifdef ALLOW_OBCS_PRESCRIBE
332                OBWptr0(j,k,bi,bj,iTracer)=0. _d 0
333                OBWptr1(j,k,bi,bj,iTracer)=0. _d 0
334    # endif
335    #endif /* ALLOW_OBCS_WEST */
336               ENDDO
337              ENDDO
338             ENDDO
339    #ifndef ALLOW_AUTODIFF_TAMC
340            ENDIF
341    #endif
342    #endif /* ALLOW_PTRACERS */
343    
344    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
345    
346  #ifdef ALLOW_ORLANSKI  #ifdef ALLOW_ORLANSKI
347          IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR.          IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR.
348       &      useOrlanskiEast.OR.useOrlanskiWest) THEN       &      useOrlanskiEast.OR.useOrlanskiWest) THEN
349    #ifdef ALLOW_DEBUG
350              IF (debugMode) CALL DEBUG_CALL('ORLANSKI_INIT',myThid)
351    #endif
352            CALL ORLANSKI_INIT(bi, bj, myThid)            CALL ORLANSKI_INIT(bi, bj, myThid)
353          ENDIF          ENDIF
354  #endif /* ALLOW_ORLANSKI */  #endif /* ALLOW_ORLANSKI */
355    
356         ENDDO         ENDDO
357        ENDDO            ENDDO
358    
359  C--   Apply OBCS values to initial conditions for consistancy  #ifdef ALLOW_OBCS_TIDES
360        DO bj = myByLo(myThid), myByHi(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
361         DO bi = myBxLo(myThid), myBxHi(myThid)         DO bi = myBxLo(myThid), myBxHi(myThid)
362          CALL OBCS_CALC( bi, bj, startTime, nIter0,          DO k=1,tidalComponents
363       &        uVel, vVel, wVel, theta, salt, myThid )           DO i=1-Olx,sNx+Olx
364          DO K=1,Nr  # ifdef ALLOW_OBCS_NORTH
365           CALL OBCS_APPLY_UV( bi, bj, k, uVel, vVel, myThid )            OBNam (i,k,bi,bj)=0. _d 0
366           CALL OBCS_APPLY_TS( bi, bj, k, theta, salt, myThid )            OBNph (i,k,bi,bj)=0. _d 0
367    # endif
368    # ifdef ALLOW_OBCS_SOUTH
369              OBSam (i,k,bi,bj)=0. _d 0
370              OBSph (i,k,bi,bj)=0. _d 0
371    # endif
372             ENDDO
373             DO j=1-Oly,sNy+Oly
374    # ifdef ALLOW_OBCS_EAST
375              OBEam (j,k,bi,bj)=0. _d 0
376              OBEph (j,k,bi,bj)=0. _d 0
377    # endif
378    # ifdef ALLOW_OBCS_WEST
379              OBWam (j,k,bi,bj)=0. _d 0
380              OBWph (j,k,bi,bj)=0. _d 0
381    # endif
382             ENDDO
383          ENDDO          ENDDO
384         ENDDO         ENDDO
385        ENDDO        ENDDO
386          _BARRIER
387    # ifdef ALLOW_OBCS_NORTH
388          IF ( OBNamFile .NE. ' '  ) CALL READ_REC_XZ_RL
389         &     (OBNamFile,fp,tidalComponents,OBNam,1,nIter0,myThid )
390          IF ( OBNphFile .NE. ' '  ) CALL READ_REC_XZ_RL
391         &     (OBNphFile,fp,tidalComponents,OBNph,1,nIter0,myThid )
392    # endif
393    # ifdef ALLOW_OBCS_SOUTH
394          IF ( OBSamFile .NE. ' '  ) CALL READ_REC_XZ_RL
395         &     (OBSamFile,fp,tidalComponents,OBSam,1,nIter0,myThid )
396          IF ( OBSphFile .NE. ' '  ) CALL READ_REC_XZ_RL
397         &     (OBSphFile,fp,tidalComponents,OBSph,1,nIter0,myThid )
398    # endif
399    # ifdef ALLOW_OBCS_EAST
400          IF ( OBEamFile .NE. ' '  ) CALL READ_REC_YZ_RL
401         &     (OBEamFile,fp,tidalComponents,OBEam,1,nIter0,myThid )
402          IF ( OBEphFile .NE. ' '  ) CALL READ_REC_YZ_RL
403         &     (OBEphFile,fp,tidalComponents,OBEph,1,nIter0,myThid )
404    # endif
405    # ifdef ALLOW_OBCS_WEST
406          IF ( OBWamFile .NE. ' '  ) CALL READ_REC_YZ_RL
407         &     (OBWamFile,fp,tidalComponents,OBWam,1,nIter0,myThid )
408          IF ( OBWphFile .NE. ' '  ) CALL READ_REC_YZ_RL
409         &     (OBWphFile,fp,tidalComponents,OBWph,1,nIter0,myThid )
410    # endif
411          _BARRIER
412    #endif /* ALLOW_OBCS_TIDES */
413    
414    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
415    C     Only needed for Orlanski:
416          IF ( nIter0.NE.0 .OR. pickupSuff.NE.' ' ) THEN
417            CALL OBCS_READ_PICKUP( nIter0, myThid )
418          ENDIF
419    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
420    
421    C--   Load/compute OBCS values (initial conditions only)
422          IF ( nIter0.EQ.0 .AND. pickupSuff.EQ.' ' ) THEN
423    #ifdef ALLOW_DEBUG
424           IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
425    #endif
426           CALL OBCS_CALC( startTime, nIter0,
427         &              uVel, vVel, wVel, theta, salt, myThid )
428    
429    C--   Apply OBCS values to initial conditions for consistency
430    C      (but initial conditions only)
431    #ifdef ALLOW_DEBUG
432           IF (debugMode)
433         &    CALL DEBUG_CALL('OBCS_APPLY_UV + OBCS_APPLY_TS',myThid)
434    #endif
435           DO bj = myByLo(myThid), myByHi(myThid)
436            DO bi = myBxLo(myThid), myBxHi(myThid)
437              CALL OBCS_APPLY_UV( bi, bj, 0, uVel, vVel, myThid )
438              CALL OBCS_APPLY_TS( bi, bj, 0, theta, salt, myThid )
439            ENDDO
440           ENDDO
441           IF (useOBCSprescribe) THEN
442    C     After applying the boundary conditions exchange the 3D-fields.
443    C     This is only necessary of the boundary values have been read
444    C     from a file.
445    #ifdef ALLOW_DEBUG
446            IF (debugMode)
447         &    CALL DEBUG_CALL('EXCHANGES in OBCS_INIT_VARIABLES',myThid)
448    #endif
449            CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
450            _EXCH_XYZ_RL( theta, myThid )
451            _EXCH_XYZ_RL( salt , myThid )
452           ENDIF
453    C     endif start from rest
454    #ifdef ALLOW_OBCS_PRESCRIBE
455          ELSEIF ( useOBCSprescribe ) THEN
456    C-- Need this call (although loading U,V,T,S OB values is not really necessary)
457    C    a) OB values needed for etaH (NonLinFreeSurf) and for wVel (nonHydrostatic)
458    C    b) OB values needed for ptracers (in case nIter0 = PTRACERS_Iter0 <> 0)
459    C    c) with present implementation, only do initialisation when called
460    C       with myTime=startTime (S/R EXF_GETFFIELDREC, setting "first")
461    C       or with myIter=nIter0 (S/R OBCS_FIELDS_LOAD). And this cannot be changed
462    C       because of above call to OBCS_CALC(startTime,nIter0).
463            CALL OBCS_PRESCRIBE_READ( startTime, nIter0, myThid )
464    #endif
465          ENDIF
466    C--   calls to S/R OBCS_COPY_TRACER on theta & salt are no longer needed
467    C     with maskInC,W,S in pkg/generic_advdiff: removed
468    
469    #ifdef ALLOW_PTRACERS
470    C     repeat everything for passive tracers
471          IF ( usePTRACERS ) THEN
472    C     catch the case when we do start from a pickup for dynamics variables
473    C     but initialise ptracers differently
474           IF ( nIter0.EQ.PTRACERS_Iter0 ) THEN
475    #ifdef ALLOW_DEBUG
476            IF (debugMode) CALL DEBUG_CALL('OBCS_APPLY_PTRACER',myThid)
477    #endif
478            DO iTracer=1,PTRACERS_numInUse
479             DO bj = myByLo(myThid), myByHi(myThid)
480              DO bi = myBxLo(myThid), myBxHi(myThid)
481                CALL OBCS_APPLY_PTRACER(
482         I           bi, bj, 0, iTracer,
483         U           ptracer(1-Olx,1-Oly,1,bi,bj,iTracer),
484         I           myThid )
485              ENDDO
486             ENDDO
487            ENDDO
488    C     endif start from rest
489           ENDIF
490           IF ( nIter0.EQ.PTRACERS_Iter0 .AND. useOBCSprescribe ) THEN
491    C     After applying the boundary conditions exchange the 3D-fields.
492    C     This is only necessary of the boundary values have been read
493    C     from a file.
494    #ifdef ALLOW_DEBUG
495             IF (debugMode) CALL DEBUG_CALL(
496         &        'PTRACERS EXCHANGES in OBCS_INIT_VARIABLES',myThid)
497    #endif
498             CALL PTRACERS_FIELDS_BLOCKING_EXCH( myThid )
499    c      ELSE
500    C--   Calls to S/R OBCS_COPY_TRACER on pTracers are no longer needed
501    C     with maskInC,W,S in pkg/generic_advdiff: removed
502    C-    This call was part of ptracers exchange S/R but was needed in all cases
503           ENDIF
504    C     endif usePTRACERS
505          ENDIF
506    #endif /* ALLOW_PTRACERS */
507    
508  #endif /* ALLOW_OBCS */  #endif /* ALLOW_OBCS */
509    
510    #ifdef ALLOW_DEBUG
511          IF (debugMode) CALL DEBUG_LEAVE('OBCS_INIT_VARIABLES',myThid)
512    #endif
513        RETURN        RETURN
514        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22