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

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

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


Revision 1.44 - (hide annotations) (download)
Thu Nov 15 20:46:52 2012 UTC (11 years, 6 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65o, checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, HEAD
Changes since 1.43: +56 -50 lines
fixing some bugs for recent obcs_add_tides commit

1 dimitri 1.44 C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_init_variables.F,v 1.43 2012/11/15 15:55:42 dimitri Exp $
2 adcroft 1.3 C $Name: $
3 adcroft 1.2
4     #include "OBCS_OPTIONS.h"
5    
6 jmc 1.35 CBOP
7     C !ROUTINE: OBCS_INIT_VARIABLES
8     C !INTERFACE:
9 adcroft 1.2 SUBROUTINE OBCS_INIT_VARIABLES( myThid )
10 jmc 1.35
11     C !DESCRIPTION:
12 jmc 1.33 C *==========================================================*
13     C | SUBROUTINE OBCS_INIT_VARIABLES
14     C | o Initialise OBCs variable data
15     C *==========================================================*
16     C *==========================================================*
17 jmc 1.35
18     C !USES:
19 adcroft 1.2 IMPLICIT NONE
20     C === Global variables ===
21     #include "SIZE.h"
22     #include "EEPARAMS.h"
23     #include "PARAMS.h"
24     #include "DYNVARS.h"
25 jmc 1.40 #include "OBCS_PARAMS.h"
26     c#include "OBCS_GRID.h"
27     #include "OBCS_FIELDS.h"
28     #include "OBCS_SEAICE.h"
29 jmc 1.17 #ifdef ALLOW_PTRACERS
30 mlosch 1.14 #include "PTRACERS_SIZE.h"
31 jmc 1.24 #include "PTRACERS_PARAMS.h"
32     #include "PTRACERS_FIELDS.h"
33 mlosch 1.14 #include "OBCS_PTRACERS.h"
34     #endif /* ALLOW_PTRACERS */
35 adcroft 1.2
36 jmc 1.35 C !INPUT/OUTPUT PARAMETERS:
37 adcroft 1.2 C == Routine arguments ==
38 jmc 1.35 C myThid :: my Thread Id Number
39 adcroft 1.2 INTEGER myThid
40 jmc 1.35 CEOP
41 adcroft 1.2
42     #ifdef ALLOW_OBCS
43    
44 jmc 1.35 C !LOCAL VARIABLES:
45 adcroft 1.2 C == Local variables ==
46     INTEGER bi, bj
47 jmc 1.39 INTEGER i, j, k
48 dimitri 1.43 INTEGER fp
49 mlosch 1.14 #ifdef ALLOW_PTRACERS
50     INTEGER iTracer
51     #endif /* ALLOW_PTRACERS */
52 adcroft 1.2
53 adcroft 1.12 #ifdef ALLOW_DEBUG
54     IF (debugMode) CALL DEBUG_ENTER('OBCS_INIT_VARIABLES',myThid)
55     #endif
56    
57 dimitri 1.43 fp = readBinaryPrec
58    
59 adcroft 1.2 DO bj = myByLo(myThid), myByHi(myThid)
60     DO bi = myBxLo(myThid), myBxHi(myThid)
61    
62 jmc 1.37 #ifdef ALLOW_OBCS_PRESCRIBE
63     OBCS_ldRec(bi,bj) = 0
64     #endif
65 jmc 1.39 DO k=1,Nr
66     DO i=1-Olx,sNx+Olx
67 heimbach 1.10 #ifdef ALLOW_OBCS_NORTH
68 jmc 1.39 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 heimbach 1.10 # endif
82 mlosch 1.41 # ifdef ALLOW_OBCS_STEVENS
83     OBNvStevens(i,k,bi,bj)=0. _d 0
84 mlosch 1.42 OBNtStevens(i,k,bi,bj)=0. _d 0
85     OBNsStevens(i,k,bi,bj)=0. _d 0
86 mlosch 1.41 # endif /* ALLOW_OBCS_STEVENS */
87 heimbach 1.10 #endif /* ALLOW_OBCS_NORTH */
88    
89     #ifdef ALLOW_OBCS_SOUTH
90 jmc 1.39 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 heimbach 1.10 # endif
104 mlosch 1.41 # ifdef ALLOW_OBCS_STEVENS
105     OBSvStevens(i,k,bi,bj)=0. _d 0
106 mlosch 1.42 OBStStevens(i,k,bi,bj)=0. _d 0
107     OBSsStevens(i,k,bi,bj)=0. _d 0
108 mlosch 1.41 # endif /* ALLOW_OBCS_STEVENS */
109 heimbach 1.10 #endif /* ALLOW_OBCS_SOUTH */
110 adcroft 1.2 ENDDO
111 heimbach 1.10
112 jmc 1.39 DO j=1-Oly,sNy+Oly
113 heimbach 1.10 #ifdef ALLOW_OBCS_EAST
114 jmc 1.39 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 heimbach 1.10 # endif
128 mlosch 1.41 # ifdef ALLOW_OBCS_STEVENS
129     OBEuStevens(j,k,bi,bj)=0. _d 0
130 mlosch 1.42 OBEtStevens(j,k,bi,bj)=0. _d 0
131     OBEsStevens(j,k,bi,bj)=0. _d 0
132 mlosch 1.41 # endif /* ALLOW_OBCS_STEVENS */
133 heimbach 1.10 #endif /* ALLOW_OBCS_EAST */
134    
135     #ifdef ALLOW_OBCS_WEST
136 jmc 1.39 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 heimbach 1.10 # endif
150 mlosch 1.41 # ifdef ALLOW_OBCS_STEVENS
151     OBWuStevens(j,k,bi,bj)=0. _d 0
152 mlosch 1.42 OBWtStevens(j,k,bi,bj)=0. _d 0
153     OBWsStevens(j,k,bi,bj)=0. _d 0
154 mlosch 1.41 # endif /* ALLOW_OBCS_STEVENS */
155 heimbach 1.10 #endif /* ALLOW_OBCS_WEST */
156 adcroft 1.2 ENDDO
157     ENDDO
158 jmc 1.5
159 jmc 1.33 #ifdef ALLOW_NONHYDROSTATIC
160 jmc 1.39 DO k=1,Nr
161     DO i=1-Olx,sNx+Olx
162     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 jmc 1.33 # endif
170     ENDDO
171 jmc 1.39 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 jmc 1.33 # endif
180     ENDDO
181     ENDDO
182     #endif /* ALLOW_NONHYDROSTATIC */
183    
184     #ifdef NONLIN_FRSURF
185 jmc 1.39 DO i=1-Olx,sNx+Olx
186     OBNeta (i,bi,bj) = 0. _d 0
187     OBSeta (i,bi,bj) = 0. _d 0
188     # ifdef ALLOW_OBCS_PRESCRIBE
189     OBNeta0(i,bi,bj) = 0. _d 0
190     OBSeta0(i,bi,bj) = 0. _d 0
191     OBNeta1(i,bi,bj) = 0. _d 0
192     OBSeta1(i,bi,bj) = 0. _d 0
193 jmc 1.33 # endif
194     ENDDO
195 jmc 1.39 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 jmc 1.33 # endif
204     ENDDO
205     #endif /* NONLIN_FRSURF */
206    
207     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
208    
209 dimitri 1.21 #ifdef ALLOW_SEAICE
210 jmc 1.39 DO i=1-Olx,sNx+Olx
211 dimitri 1.21 #ifdef ALLOW_OBCS_NORTH
212 jmc 1.39 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 dimitri 1.21 #endif /* ALLOW_OBCS_NORTH */
231     #ifdef ALLOW_OBCS_SOUTH
232 jmc 1.39 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 dimitri 1.21 #endif /* ALLOW_OBCS_SOUTH */
251     ENDDO
252 jmc 1.39 DO j=1-Oly,sNy+Oly
253 dimitri 1.21 #ifdef ALLOW_OBCS_EAST
254 jmc 1.39 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 dimitri 1.21 #endif /* ALLOW_OBCS_EAST */
273     #ifdef ALLOW_OBCS_WEST
274 jmc 1.39 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 dimitri 1.21 #endif /* ALLOW_OBCS_WEST */
293     ENDDO
294     #endif /* ALLOW_SEAICE */
295    
296 mlosch 1.14 #ifdef ALLOW_PTRACERS
297 mlosch 1.20 #ifndef ALLOW_AUTODIFF_TAMC
298 mlosch 1.16 IF ( usePTRACERS ) THEN
299 mlosch 1.20 #endif
300 mlosch 1.16 DO iTracer=1,PTRACERS_numInUse
301 jmc 1.39 DO k=1,Nr
302     DO i=1-Olx,sNx+Olx
303 mlosch 1.14 #ifdef ALLOW_OBCS_NORTH
304 jmc 1.39 OBNptr (i,k,bi,bj,iTracer)=0. _d 0
305 mlosch 1.14 # ifdef ALLOW_OBCS_PRESCRIBE
306 jmc 1.39 OBNptr0(i,k,bi,bj,iTracer)=0. _d 0
307     OBNptr1(i,k,bi,bj,iTracer)=0. _d 0
308 mlosch 1.14 # endif
309     #endif /* ALLOW_OBCS_NORTH */
310 jmc 1.27
311 mlosch 1.14 #ifdef ALLOW_OBCS_SOUTH
312 jmc 1.39 OBSptr (i,k,bi,bj,iTracer)=0. _d 0
313 mlosch 1.14 # ifdef ALLOW_OBCS_PRESCRIBE
314 jmc 1.39 OBSptr0(i,k,bi,bj,iTracer)=0. _d 0
315     OBSptr1(i,k,bi,bj,iTracer)=0. _d 0
316 mlosch 1.14 # endif
317     #endif /* ALLOW_OBCS_SOUTH */
318 mlosch 1.16 ENDDO
319 jmc 1.27
320 jmc 1.39 DO j=1-Oly,sNy+Oly
321 mlosch 1.14 #ifdef ALLOW_OBCS_EAST
322 jmc 1.39 OBEptr (j,k,bi,bj,iTracer)=0. _d 0
323 mlosch 1.14 # ifdef ALLOW_OBCS_PRESCRIBE
324 jmc 1.39 OBEptr0(j,k,bi,bj,iTracer)=0. _d 0
325     OBEptr1(j,k,bi,bj,iTracer)=0. _d 0
326 mlosch 1.14 # endif
327     #endif /* ALLOW_OBCS_EAST */
328 jmc 1.27
329 mlosch 1.14 #ifdef ALLOW_OBCS_WEST
330 jmc 1.39 OBWptr (j,k,bi,bj,iTracer)=0. _d 0
331 mlosch 1.14 # ifdef ALLOW_OBCS_PRESCRIBE
332 jmc 1.39 OBWptr0(j,k,bi,bj,iTracer)=0. _d 0
333     OBWptr1(j,k,bi,bj,iTracer)=0. _d 0
334 mlosch 1.14 # endif
335     #endif /* ALLOW_OBCS_WEST */
336 mlosch 1.16 ENDDO
337 mlosch 1.14 ENDDO
338     ENDDO
339 mlosch 1.20 #ifndef ALLOW_AUTODIFF_TAMC
340 mlosch 1.16 ENDIF
341 mlosch 1.20 #endif
342 mlosch 1.14 #endif /* ALLOW_PTRACERS */
343    
344 jmc 1.33 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
345 adcroft 1.2
346     #ifdef ALLOW_ORLANSKI
347     IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR.
348     & useOrlanskiEast.OR.useOrlanskiWest) THEN
349 adcroft 1.12 #ifdef ALLOW_DEBUG
350 jmc 1.39 IF (debugMode) CALL DEBUG_CALL('ORLANSKI_INIT',myThid)
351 adcroft 1.12 #endif
352 adcroft 1.2 CALL ORLANSKI_INIT(bi, bj, myThid)
353     ENDIF
354     #endif /* ALLOW_ORLANSKI */
355 adcroft 1.3
356     ENDDO
357 jmc 1.27 ENDDO
358 jmc 1.7
359 dimitri 1.44 #ifdef ALLOW_OBCS_TIDES
360     DO bj = myByLo(myThid), myByHi(myThid)
361     DO bi = myBxLo(myThid), myBxHi(myThid)
362     DO k=1,tidalComponents
363     DO i=1-Olx,sNx+Olx
364     # ifdef ALLOW_OBCS_NORTH
365     OBNam (i,k,bi,bj)=0. _d 0
366     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
384     ENDDO
385     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 adcroft 1.9 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
415 jmc 1.29 C Only needed for Orlanski:
416 jmc 1.31 IF ( nIter0.NE.0 .OR. pickupSuff.NE.' ' ) THEN
417 jmc 1.29 CALL OBCS_READ_PICKUP( nIter0, myThid )
418 jmc 1.31 ENDIF
419 mlosch 1.30 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
420 adcroft 1.9
421 jmc 1.29 C-- Load/compute OBCS values (initial conditions only)
422 jmc 1.31 IF ( nIter0.EQ.0 .AND. pickupSuff.EQ.' ' ) THEN
423 adcroft 1.12 #ifdef ALLOW_DEBUG
424 jmc 1.29 IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
425 adcroft 1.12 #endif
426 jahn 1.34 CALL OBCS_CALC( startTime, nIter0,
427 jmc 1.29 & uVel, vVel, wVel, theta, salt, myThid )
428 heimbach 1.10
429 jmc 1.17 C-- Apply OBCS values to initial conditions for consistency
430     C (but initial conditions only)
431 adcroft 1.12 #ifdef ALLOW_DEBUG
432 jmc 1.27 IF (debugMode)
433 jmc 1.35 & CALL DEBUG_CALL('OBCS_APPLY_UV + OBCS_APPLY_TS',myThid)
434 adcroft 1.12 #endif
435 mlosch 1.15 DO bj = myByLo(myThid), myByHi(myThid)
436     DO bi = myBxLo(myThid), myBxHi(myThid)
437 jmc 1.35 CALL OBCS_APPLY_UV( bi, bj, 0, uVel, vVel, myThid )
438 jmc 1.36 CALL OBCS_APPLY_TS( bi, bj, 0, theta, salt, myThid )
439 mlosch 1.15 ENDDO
440     ENDDO
441 mlosch 1.18 IF (useOBCSprescribe) THEN
442     C After applying the boundary conditions exchange the 3D-fields.
443 jmc 1.32 C This is only necessary of the boundary values have been read
444 mlosch 1.18 C from a file.
445     #ifdef ALLOW_DEBUG
446 jmc 1.27 IF (debugMode)
447 jmc 1.35 & CALL DEBUG_CALL('EXCHANGES in OBCS_INIT_VARIABLES',myThid)
448 mlosch 1.18 #endif
449     CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
450 jmc 1.26 _EXCH_XYZ_RL( theta, myThid )
451     _EXCH_XYZ_RL( salt , myThid )
452 mlosch 1.18 ENDIF
453     C endif start from rest
454 jmc 1.31 #ifdef ALLOW_OBCS_PRESCRIBE
455 jmc 1.32 ELSEIF ( useOBCSprescribe ) THEN
456 jmc 1.39 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 jmc 1.31 CALL OBCS_PRESCRIBE_READ( startTime, nIter0, myThid )
464     #endif
465 mlosch 1.18 ENDIF
466 jmc 1.38 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 jmc 1.31
469 mlosch 1.14 #ifdef ALLOW_PTRACERS
470 mlosch 1.15 C repeat everything for passive tracers
471 mlosch 1.18 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 jmc 1.36 IF ( nIter0.EQ.PTRACERS_Iter0 ) THEN
475 mlosch 1.15 #ifdef ALLOW_DEBUG
476 jmc 1.39 IF (debugMode) CALL DEBUG_CALL('OBCS_APPLY_PTRACER',myThid)
477 mlosch 1.15 #endif
478     DO iTracer=1,PTRACERS_numInUse
479     DO bj = myByLo(myThid), myByHi(myThid)
480     DO bi = myBxLo(myThid), myBxHi(myThid)
481 jmc 1.27 CALL OBCS_APPLY_PTRACER(
482 jmc 1.39 I bi, bj, 0, iTracer,
483     U ptracer(1-Olx,1-Oly,1,bi,bj,iTracer),
484 mlosch 1.15 I myThid )
485     ENDDO
486 mlosch 1.14 ENDDO
487 mlosch 1.15 ENDDO
488 jmc 1.36 C endif start from rest
489     ENDIF
490     IF ( nIter0.EQ.PTRACERS_Iter0 .AND. useOBCSprescribe ) THEN
491 mlosch 1.11 C After applying the boundary conditions exchange the 3D-fields.
492 jmc 1.32 C This is only necessary of the boundary values have been read
493 mlosch 1.11 C from a file.
494 adcroft 1.12 #ifdef ALLOW_DEBUG
495 jmc 1.27 IF (debugMode) CALL DEBUG_CALL(
496 mlosch 1.18 & 'PTRACERS EXCHANGES in OBCS_INIT_VARIABLES',myThid)
497 adcroft 1.12 #endif
498 jmc 1.19 CALL PTRACERS_FIELDS_BLOCKING_EXCH( myThid )
499 jmc 1.38 c ELSE
500 jmc 1.39 C-- Calls to S/R OBCS_COPY_TRACER on pTracers are no longer needed
501 jmc 1.38 C with maskInC,W,S in pkg/generic_advdiff: removed
502 jmc 1.39 C- This call was part of ptracers exchange S/R but was needed in all cases
503 mlosch 1.15 ENDIF
504 mlosch 1.18 C endif usePTRACERS
505     ENDIF
506 mlosch 1.15 #endif /* ALLOW_PTRACERS */
507 mlosch 1.11
508 adcroft 1.2 #endif /* ALLOW_OBCS */
509 heimbach 1.10
510 adcroft 1.12 #ifdef ALLOW_DEBUG
511     IF (debugMode) CALL DEBUG_LEAVE('OBCS_INIT_VARIABLES',myThid)
512     #endif
513 adcroft 1.2 RETURN
514     END

  ViewVC Help
Powered by ViewVC 1.1.22