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

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

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


Revision 1.44 - (show annotations) (download)
Thu Nov 15 20:46:52 2012 UTC (11 years, 5 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 C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_init_variables.F,v 1.43 2012/11/15 15:55:42 dimitri Exp $
2 C $Name: $
3
4 #include "OBCS_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: OBCS_INIT_VARIABLES
8 C !INTERFACE:
9 SUBROUTINE OBCS_INIT_VARIABLES( myThid )
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 ===
21 #include "SIZE.h"
22 #include "EEPARAMS.h"
23 #include "PARAMS.h"
24 #include "DYNVARS.h"
25 #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 ==
38 C myThid :: my Thread Id Number
39 INTEGER myThid
40 CEOP
41
42 #ifdef ALLOW_OBCS
43
44 C !LOCAL VARIABLES:
45 C == Local variables ==
46 INTEGER bi, bj
47 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)
60 DO bi = myBxLo(myThid), myBxHi(myThid)
61
62 #ifdef ALLOW_OBCS_PRESCRIBE
63 OBCS_ldRec(bi,bj) = 0
64 #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
157 ENDDO
158
159 #ifdef ALLOW_NONHYDROSTATIC
160 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 # 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
181 ENDDO
182 #endif /* ALLOW_NONHYDROSTATIC */
183
184 #ifdef NONLIN_FRSURF
185 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 # 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
205 #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
347 IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR.
348 & 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)
353 ENDIF
354 #endif /* ALLOW_ORLANSKI */
355
356 ENDDO
357 ENDDO
358
359 #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 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 */
509
510 #ifdef ALLOW_DEBUG
511 IF (debugMode) CALL DEBUG_LEAVE('OBCS_INIT_VARIABLES',myThid)
512 #endif
513 RETURN
514 END

  ViewVC Help
Powered by ViewVC 1.1.22