Back to home page

MITgcm

 
 

    


File indexing completed on 2019-08-24 05:11:01 UTC

view on githubraw file Latest commit abfe198b on 2019-08-23 19:59:52 UTC
42c525bfb4 Alis*0001 #include "OBCS_OPTIONS.h"
                0002 
c8754365e9 Jean*0003 CBOP
                0004 C     !ROUTINE: OBCS_INIT_VARIABLES
                0005 C     !INTERFACE:
42c525bfb4 Alis*0006       SUBROUTINE OBCS_INIT_VARIABLES( myThid )
c8754365e9 Jean*0007 
                0008 C     !DESCRIPTION:
2d12bccb16 Jean*0009 C     *==========================================================*
                0010 C     | SUBROUTINE OBCS_INIT_VARIABLES
                0011 C     | o Initialise OBCs variable data
                0012 C     *==========================================================*
                0013 C     *==========================================================*
42c525bfb4 Alis*0014 
c8754365e9 Jean*0015 C     !USES:
                0016       IMPLICIT NONE
42c525bfb4 Alis*0017 C     === Global variables ===
                0018 #include "SIZE.h"
                0019 #include "EEPARAMS.h"
                0020 #include "PARAMS.h"
                0021 #include "DYNVARS.h"
9b4f2a04e2 Jean*0022 #include "OBCS_PARAMS.h"
                0023 c#include "OBCS_GRID.h"
                0024 #include "OBCS_FIELDS.h"
                0025 #include "OBCS_SEAICE.h"
d38a1b9bc4 Jean*0026 #ifdef ALLOW_PTRACERS
ee1c912a22 Mart*0027 #include "PTRACERS_SIZE.h"
a5787b36f8 Jean*0028 #include "PTRACERS_PARAMS.h"
                0029 #include "PTRACERS_FIELDS.h"
ee1c912a22 Mart*0030 #include "OBCS_PTRACERS.h"
                0031 #endif /* ALLOW_PTRACERS */
42c525bfb4 Alis*0032 
c8754365e9 Jean*0033 C     !INPUT/OUTPUT PARAMETERS:
42c525bfb4 Alis*0034 C     == Routine arguments ==
c8754365e9 Jean*0035 C     myThid :: my Thread Id Number
42c525bfb4 Alis*0036       INTEGER myThid
c8754365e9 Jean*0037 CEOP
42c525bfb4 Alis*0038 
                0039 #ifdef ALLOW_OBCS
                0040 
c8754365e9 Jean*0041 C     !LOCAL VARIABLES:
42c525bfb4 Alis*0042 C     == Local variables ==
                0043       INTEGER bi, bj
6960d36165 Jean*0044       INTEGER i, j, k
6f4cf52d27 Dimi*0045       INTEGER fp
ee1c912a22 Mart*0046 #ifdef ALLOW_PTRACERS
                0047       INTEGER iTracer
                0048 #endif /* ALLOW_PTRACERS */
42c525bfb4 Alis*0049 
abb214f17f Alis*0050 #ifdef ALLOW_DEBUG
                0051       IF (debugMode) CALL DEBUG_ENTER('OBCS_INIT_VARIABLES',myThid)
                0052 #endif
                0053 
6f4cf52d27 Dimi*0054       fp = readBinaryPrec
                0055 
42c525bfb4 Alis*0056       DO bj = myByLo(myThid), myByHi(myThid)
                0057        DO bi = myBxLo(myThid), myBxHi(myThid)
                0058 
8b081ca9eb Jean*0059 #ifdef ALLOW_OBCS_PRESCRIBE
                0060         OBCS_ldRec(bi,bj) = 0
                0061 #endif
6960d36165 Jean*0062         DO k=1,Nr
                0063          DO i=1-Olx,sNx+Olx
96bbd4e2a5 Patr*0064 #ifdef ALLOW_OBCS_NORTH
6960d36165 Jean*0065           OBNu(i,k,bi,bj)=0. _d 0
                0066           OBNv(i,k,bi,bj)=0. _d 0
                0067           OBNt(i,k,bi,bj)=0. _d 0
                0068           OBNs(i,k,bi,bj)=0. _d 0
96bbd4e2a5 Patr*0069 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0070           OBNu0(i,k,bi,bj)=0. _d 0
                0071           OBNv0(i,k,bi,bj)=0. _d 0
                0072           OBNt0(i,k,bi,bj)=0. _d 0
                0073           OBNs0(i,k,bi,bj)=0. _d 0
                0074           OBNu1(i,k,bi,bj)=0. _d 0
                0075           OBNv1(i,k,bi,bj)=0. _d 0
                0076           OBNt1(i,k,bi,bj)=0. _d 0
                0077           OBNs1(i,k,bi,bj)=0. _d 0
96bbd4e2a5 Patr*0078 # endif
824ab1e2dd Mart*0079 # ifdef ALLOW_OBCS_STEVENS
                0080           OBNvStevens(i,k,bi,bj)=0. _d 0
b1353a35da Mart*0081           OBNtStevens(i,k,bi,bj)=0. _d 0
                0082           OBNsStevens(i,k,bi,bj)=0. _d 0
824ab1e2dd Mart*0083 # endif /* ALLOW_OBCS_STEVENS */
96bbd4e2a5 Patr*0084 #endif /* ALLOW_OBCS_NORTH */
                0085 
                0086 #ifdef ALLOW_OBCS_SOUTH
6960d36165 Jean*0087           OBSu(i,k,bi,bj)=0. _d 0
                0088           OBSv(i,k,bi,bj)=0. _d 0
                0089           OBSt(i,k,bi,bj)=0. _d 0
                0090           OBSs(i,k,bi,bj)=0. _d 0
96bbd4e2a5 Patr*0091 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0092           OBSu0(i,k,bi,bj)=0. _d 0
                0093           OBSv0(i,k,bi,bj)=0. _d 0
                0094           OBSt0(i,k,bi,bj)=0. _d 0
                0095           OBSs0(i,k,bi,bj)=0. _d 0
                0096           OBSu1(i,k,bi,bj)=0. _d 0
                0097           OBSv1(i,k,bi,bj)=0. _d 0
                0098           OBSt1(i,k,bi,bj)=0. _d 0
                0099           OBSs1(i,k,bi,bj)=0. _d 0
96bbd4e2a5 Patr*0100 # endif
824ab1e2dd Mart*0101 # ifdef ALLOW_OBCS_STEVENS
                0102           OBSvStevens(i,k,bi,bj)=0. _d 0
b1353a35da Mart*0103           OBStStevens(i,k,bi,bj)=0. _d 0
                0104           OBSsStevens(i,k,bi,bj)=0. _d 0
824ab1e2dd Mart*0105 # endif /* ALLOW_OBCS_STEVENS */
96bbd4e2a5 Patr*0106 #endif /* ALLOW_OBCS_SOUTH */
42c525bfb4 Alis*0107          ENDDO
96bbd4e2a5 Patr*0108 
6960d36165 Jean*0109          DO j=1-Oly,sNy+Oly
96bbd4e2a5 Patr*0110 #ifdef ALLOW_OBCS_EAST
6960d36165 Jean*0111           OBEu(j,k,bi,bj)=0. _d 0
                0112           OBEv(j,k,bi,bj)=0. _d 0
                0113           OBEt(j,k,bi,bj)=0. _d 0
                0114           OBEs(j,k,bi,bj)=0. _d 0
96bbd4e2a5 Patr*0115 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0116           OBEu0(j,k,bi,bj)=0. _d 0
                0117           OBEv0(j,k,bi,bj)=0. _d 0
                0118           OBEt0(j,k,bi,bj)=0. _d 0
                0119           OBEs0(j,k,bi,bj)=0. _d 0
                0120           OBEu1(j,k,bi,bj)=0. _d 0
                0121           OBEv1(j,k,bi,bj)=0. _d 0
                0122           OBEt1(j,k,bi,bj)=0. _d 0
                0123           OBEs1(j,k,bi,bj)=0. _d 0
96bbd4e2a5 Patr*0124 # endif
824ab1e2dd Mart*0125 # ifdef ALLOW_OBCS_STEVENS
                0126           OBEuStevens(j,k,bi,bj)=0. _d 0
b1353a35da Mart*0127           OBEtStevens(j,k,bi,bj)=0. _d 0
                0128           OBEsStevens(j,k,bi,bj)=0. _d 0
824ab1e2dd Mart*0129 # endif /* ALLOW_OBCS_STEVENS */
96bbd4e2a5 Patr*0130 #endif /* ALLOW_OBCS_EAST */
                0131 
                0132 #ifdef ALLOW_OBCS_WEST
6960d36165 Jean*0133           OBWu(j,k,bi,bj)=0. _d 0
                0134           OBWv(j,k,bi,bj)=0. _d 0
                0135           OBWt(j,k,bi,bj)=0. _d 0
                0136           OBWs(j,k,bi,bj)=0. _d 0
96bbd4e2a5 Patr*0137 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0138           OBWu0(j,k,bi,bj)=0. _d 0
                0139           OBWv0(j,k,bi,bj)=0. _d 0
                0140           OBWt0(j,k,bi,bj)=0. _d 0
                0141           OBWs0(j,k,bi,bj)=0. _d 0
                0142           OBWu1(j,k,bi,bj)=0. _d 0
                0143           OBWv1(j,k,bi,bj)=0. _d 0
                0144           OBWt1(j,k,bi,bj)=0. _d 0
                0145           OBWs1(j,k,bi,bj)=0. _d 0
96bbd4e2a5 Patr*0146 # endif
824ab1e2dd Mart*0147 # ifdef ALLOW_OBCS_STEVENS
                0148           OBWuStevens(j,k,bi,bj)=0. _d 0
b1353a35da Mart*0149           OBWtStevens(j,k,bi,bj)=0. _d 0
                0150           OBWsStevens(j,k,bi,bj)=0. _d 0
824ab1e2dd Mart*0151 # endif /* ALLOW_OBCS_STEVENS */
96bbd4e2a5 Patr*0152 #endif /* ALLOW_OBCS_WEST */
42c525bfb4 Alis*0153          ENDDO
                0154         ENDDO
                0155 
2d12bccb16 Jean*0156 #ifdef ALLOW_NONHYDROSTATIC
6960d36165 Jean*0157         DO k=1,Nr
                0158          DO i=1-Olx,sNx+Olx
                0159           OBNw (i,k,bi,bj) = 0. _d 0
                0160           OBSw (i,k,bi,bj) = 0. _d 0
2d12bccb16 Jean*0161 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0162           OBNw0(i,k,bi,bj) = 0. _d 0
                0163           OBSw0(i,k,bi,bj) = 0. _d 0
                0164           OBNw1(i,k,bi,bj) = 0. _d 0
                0165           OBSw1(i,k,bi,bj) = 0. _d 0
2d12bccb16 Jean*0166 # endif
                0167          ENDDO
6960d36165 Jean*0168          DO j=1-Oly,sNy+Oly
                0169           OBEw (j,k,bi,bj) = 0. _d 0
                0170           OBWw (j,k,bi,bj) = 0. _d 0
2d12bccb16 Jean*0171 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0172           OBEw0(j,k,bi,bj) = 0. _d 0
                0173           OBWw0(j,k,bi,bj) = 0. _d 0
                0174           OBEw1(j,k,bi,bj) = 0. _d 0
                0175           OBWw1(j,k,bi,bj) = 0. _d 0
2d12bccb16 Jean*0176 # endif
                0177          ENDDO
                0178         ENDDO
                0179 #endif /* ALLOW_NONHYDROSTATIC */
                0180 
                0181 #ifdef NONLIN_FRSURF
6960d36165 Jean*0182         DO i=1-Olx,sNx+Olx
                0183           OBNeta (i,bi,bj) = 0. _d 0
                0184           OBSeta (i,bi,bj) = 0. _d 0
2d12bccb16 Jean*0185 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0186           OBNeta0(i,bi,bj) = 0. _d 0
                0187           OBSeta0(i,bi,bj) = 0. _d 0
                0188           OBNeta1(i,bi,bj) = 0. _d 0
                0189           OBSeta1(i,bi,bj) = 0. _d 0
2d12bccb16 Jean*0190 # endif
                0191         ENDDO
6960d36165 Jean*0192         DO j=1-Oly,sNy+Oly
                0193           OBEeta (j,bi,bj) = 0. _d 0
                0194           OBWeta (j,bi,bj) = 0. _d 0
2d12bccb16 Jean*0195 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0196           OBEeta0(j,bi,bj) = 0. _d 0
                0197           OBWeta0(j,bi,bj) = 0. _d 0
                0198           OBEeta1(j,bi,bj) = 0. _d 0
                0199           OBWeta1(j,bi,bj) = 0. _d 0
2d12bccb16 Jean*0200 # endif
                0201         ENDDO
                0202 #endif /* NONLIN_FRSURF */
                0203 
                0204 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0205 
b48f786726 Dimi*0206 #ifdef ALLOW_SEAICE
6960d36165 Jean*0207         DO i=1-Olx,sNx+Olx
b48f786726 Dimi*0208 #ifdef ALLOW_OBCS_NORTH
6960d36165 Jean*0209          OBNa (i,bi,bj)=0. _d 0
                0210          OBNh (i,bi,bj)=0. _d 0
                0211          OBNa0(i,bi,bj)=0. _d 0
                0212          OBNh0(i,bi,bj)=0. _d 0
                0213          OBNa1(i,bi,bj)=0. _d 0
                0214          OBNh1(i,bi,bj)=0. _d 0
                0215          OBNsl (i,bi,bj)=0. _d 0
                0216          OBNsn (i,bi,bj)=0. _d 0
                0217          OBNsl0(i,bi,bj)=0. _d 0
                0218          OBNsn0(i,bi,bj)=0. _d 0
                0219          OBNsl1(i,bi,bj)=0. _d 0
                0220          OBNsn1(i,bi,bj)=0. _d 0
                0221          OBNuice (i,bi,bj)=0. _d 0
                0222          OBNvice (i,bi,bj)=0. _d 0
                0223          OBNuice0(i,bi,bj)=0. _d 0
                0224          OBNvice0(i,bi,bj)=0. _d 0
                0225          OBNuice1(i,bi,bj)=0. _d 0
                0226          OBNvice1(i,bi,bj)=0. _d 0
b48f786726 Dimi*0227 #endif /* ALLOW_OBCS_NORTH */
                0228 #ifdef ALLOW_OBCS_SOUTH
6960d36165 Jean*0229          OBSa (i,bi,bj)=0. _d 0
                0230          OBSh (i,bi,bj)=0. _d 0
                0231          OBSa0(i,bi,bj)=0. _d 0
                0232          OBSh0(i,bi,bj)=0. _d 0
                0233          OBSa1(i,bi,bj)=0. _d 0
                0234          OBSh1(i,bi,bj)=0. _d 0
                0235          OBSsl (i,bi,bj)=0. _d 0
                0236          OBSsn (i,bi,bj)=0. _d 0
                0237          OBSsl0(i,bi,bj)=0. _d 0
                0238          OBSsn0(i,bi,bj)=0. _d 0
                0239          OBSsl1(i,bi,bj)=0. _d 0
                0240          OBSsn1(i,bi,bj)=0. _d 0
                0241          OBSuice (i,bi,bj)=0. _d 0
                0242          OBSvice (i,bi,bj)=0. _d 0
                0243          OBSuice0(i,bi,bj)=0. _d 0
                0244          OBSvice0(i,bi,bj)=0. _d 0
                0245          OBSuice1(i,bi,bj)=0. _d 0
                0246          OBSvice1(i,bi,bj)=0. _d 0
b48f786726 Dimi*0247 #endif /* ALLOW_OBCS_SOUTH */
                0248         ENDDO
6960d36165 Jean*0249         DO j=1-Oly,sNy+Oly
b48f786726 Dimi*0250 #ifdef ALLOW_OBCS_EAST
6960d36165 Jean*0251          OBEa (j,bi,bj)=0. _d 0
                0252          OBEh (j,bi,bj)=0. _d 0
                0253          OBEa0(j,bi,bj)=0. _d 0
                0254          OBEh0(j,bi,bj)=0. _d 0
                0255          OBEa1(j,bi,bj)=0. _d 0
                0256          OBEh1(j,bi,bj)=0. _d 0
                0257          OBEsl (j,bi,bj)=0. _d 0
                0258          OBEsn (j,bi,bj)=0. _d 0
                0259          OBEsl0(j,bi,bj)=0. _d 0
                0260          OBEsn0(j,bi,bj)=0. _d 0
                0261          OBEsl1(j,bi,bj)=0. _d 0
                0262          OBEsn1(j,bi,bj)=0. _d 0
                0263          OBEuice (j,bi,bj)=0. _d 0
                0264          OBEvice (j,bi,bj)=0. _d 0
                0265          OBEuice0(j,bi,bj)=0. _d 0
                0266          OBEvice0(j,bi,bj)=0. _d 0
                0267          OBEuice1(j,bi,bj)=0. _d 0
                0268          OBEvice1(j,bi,bj)=0. _d 0
b48f786726 Dimi*0269 #endif /* ALLOW_OBCS_EAST */
                0270 #ifdef ALLOW_OBCS_WEST
6960d36165 Jean*0271          OBWa (j,bi,bj)=0. _d 0
                0272          OBWh (j,bi,bj)=0. _d 0
                0273          OBWa0(j,bi,bj)=0. _d 0
                0274          OBWh0(j,bi,bj)=0. _d 0
                0275          OBWa1(j,bi,bj)=0. _d 0
                0276          OBWh1(j,bi,bj)=0. _d 0
                0277          OBWsl (j,bi,bj)=0. _d 0
                0278          OBWsn (j,bi,bj)=0. _d 0
                0279          OBWsl0(j,bi,bj)=0. _d 0
                0280          OBWsn0(j,bi,bj)=0. _d 0
                0281          OBWsl1(j,bi,bj)=0. _d 0
                0282          OBWsn1(j,bi,bj)=0. _d 0
                0283          OBWuice (j,bi,bj)=0. _d 0
                0284          OBWvice (j,bi,bj)=0. _d 0
                0285          OBWuice0(j,bi,bj)=0. _d 0
                0286          OBWvice0(j,bi,bj)=0. _d 0
                0287          OBWuice1(j,bi,bj)=0. _d 0
                0288          OBWvice1(j,bi,bj)=0. _d 0
b48f786726 Dimi*0289 #endif /* ALLOW_OBCS_WEST */
                0290         ENDDO
                0291 #endif /* ALLOW_SEAICE */
                0292 
ee1c912a22 Mart*0293 #ifdef ALLOW_PTRACERS
517be4a08a Mart*0294 #ifndef ALLOW_AUTODIFF_TAMC
ab41fb7174 Mart*0295         IF ( usePTRACERS ) THEN
517be4a08a Mart*0296 #endif
ab41fb7174 Mart*0297          DO iTracer=1,PTRACERS_numInUse
6960d36165 Jean*0298           DO k=1,Nr
                0299            DO i=1-Olx,sNx+Olx
ee1c912a22 Mart*0300 #ifdef ALLOW_OBCS_NORTH
6960d36165 Jean*0301             OBNptr (i,k,bi,bj,iTracer)=0. _d 0
ee1c912a22 Mart*0302 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0303             OBNptr0(i,k,bi,bj,iTracer)=0. _d 0
                0304             OBNptr1(i,k,bi,bj,iTracer)=0. _d 0
ee1c912a22 Mart*0305 # endif
                0306 #endif /* ALLOW_OBCS_NORTH */
5b187c067b Jean*0307 
ee1c912a22 Mart*0308 #ifdef ALLOW_OBCS_SOUTH
6960d36165 Jean*0309             OBSptr (i,k,bi,bj,iTracer)=0. _d 0
ee1c912a22 Mart*0310 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0311             OBSptr0(i,k,bi,bj,iTracer)=0. _d 0
                0312             OBSptr1(i,k,bi,bj,iTracer)=0. _d 0
ee1c912a22 Mart*0313 # endif
                0314 #endif /* ALLOW_OBCS_SOUTH */
ab41fb7174 Mart*0315            ENDDO
5b187c067b Jean*0316 
6960d36165 Jean*0317            DO j=1-Oly,sNy+Oly
ee1c912a22 Mart*0318 #ifdef ALLOW_OBCS_EAST
6960d36165 Jean*0319             OBEptr (j,k,bi,bj,iTracer)=0. _d 0
ee1c912a22 Mart*0320 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0321             OBEptr0(j,k,bi,bj,iTracer)=0. _d 0
                0322             OBEptr1(j,k,bi,bj,iTracer)=0. _d 0
ee1c912a22 Mart*0323 # endif
                0324 #endif /* ALLOW_OBCS_EAST */
5b187c067b Jean*0325 
ee1c912a22 Mart*0326 #ifdef ALLOW_OBCS_WEST
6960d36165 Jean*0327             OBWptr (j,k,bi,bj,iTracer)=0. _d 0
ee1c912a22 Mart*0328 # ifdef ALLOW_OBCS_PRESCRIBE
6960d36165 Jean*0329             OBWptr0(j,k,bi,bj,iTracer)=0. _d 0
                0330             OBWptr1(j,k,bi,bj,iTracer)=0. _d 0
ee1c912a22 Mart*0331 # endif
                0332 #endif /* ALLOW_OBCS_WEST */
ab41fb7174 Mart*0333            ENDDO
ee1c912a22 Mart*0334           ENDDO
                0335          ENDDO
517be4a08a Mart*0336 #ifndef ALLOW_AUTODIFF_TAMC
ab41fb7174 Mart*0337         ENDIF
517be4a08a Mart*0338 #endif
ee1c912a22 Mart*0339 #endif /* ALLOW_PTRACERS */
                0340 
2d12bccb16 Jean*0341 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7af3d6f22c Jean*0342 
42c525bfb4 Alis*0343 #ifdef ALLOW_ORLANSKI
                0344         IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR.
                0345      &      useOrlanskiEast.OR.useOrlanskiWest) THEN
abb214f17f Alis*0346 #ifdef ALLOW_DEBUG
6960d36165 Jean*0347           IF (debugMode) CALL DEBUG_CALL('ORLANSKI_INIT',myThid)
abb214f17f Alis*0348 #endif
42c525bfb4 Alis*0349           CALL ORLANSKI_INIT(bi, bj, myThid)
                0350         ENDIF
                0351 #endif /* ALLOW_ORLANSKI */
                0352 
dc4fb63152 Alis*0353        ENDDO
5b187c067b Jean*0354       ENDDO
dc4fb63152 Alis*0355 
beb3b14177 Dimi*0356 #ifdef ALLOW_OBCS_TIDES
                0357       DO bj = myByLo(myThid), myByHi(myThid)
                0358        DO bi = myBxLo(myThid), myBxHi(myThid)
                0359         DO k=1,tidalComponents
                0360          DO i=1-Olx,sNx+Olx
                0361 # ifdef ALLOW_OBCS_NORTH
                0362           OBNam (i,k,bi,bj)=0. _d 0
                0363           OBNph (i,k,bi,bj)=0. _d 0
                0364 # endif
                0365 # ifdef ALLOW_OBCS_SOUTH
                0366           OBSam (i,k,bi,bj)=0. _d 0
                0367           OBSph (i,k,bi,bj)=0. _d 0
                0368 # endif
                0369          ENDDO
                0370          DO j=1-Oly,sNy+Oly
                0371 # ifdef ALLOW_OBCS_EAST
                0372           OBEam (j,k,bi,bj)=0. _d 0
                0373           OBEph (j,k,bi,bj)=0. _d 0
                0374 # endif
                0375 # ifdef ALLOW_OBCS_WEST
                0376           OBWam (j,k,bi,bj)=0. _d 0
                0377           OBWph (j,k,bi,bj)=0. _d 0
                0378 # endif
                0379          ENDDO
                0380         ENDDO
                0381        ENDDO
                0382       ENDDO
                0383       _BARRIER
                0384 # ifdef ALLOW_OBCS_NORTH
                0385       IF ( OBNamFile .NE. ' '  ) CALL READ_REC_XZ_RL
                0386      &     (OBNamFile,fp,tidalComponents,OBNam,1,nIter0,myThid )
                0387       IF ( OBNphFile .NE. ' '  ) CALL READ_REC_XZ_RL
                0388      &     (OBNphFile,fp,tidalComponents,OBNph,1,nIter0,myThid )
                0389 # endif
                0390 # ifdef ALLOW_OBCS_SOUTH
                0391       IF ( OBSamFile .NE. ' '  ) CALL READ_REC_XZ_RL
                0392      &     (OBSamFile,fp,tidalComponents,OBSam,1,nIter0,myThid )
                0393       IF ( OBSphFile .NE. ' '  ) CALL READ_REC_XZ_RL
                0394      &     (OBSphFile,fp,tidalComponents,OBSph,1,nIter0,myThid )
                0395 # endif
                0396 # ifdef ALLOW_OBCS_EAST
                0397       IF ( OBEamFile .NE. ' '  ) CALL READ_REC_YZ_RL
                0398      &     (OBEamFile,fp,tidalComponents,OBEam,1,nIter0,myThid )
                0399       IF ( OBEphFile .NE. ' '  ) CALL READ_REC_YZ_RL
                0400      &     (OBEphFile,fp,tidalComponents,OBEph,1,nIter0,myThid )
                0401 # endif
                0402 # ifdef ALLOW_OBCS_WEST
                0403       IF ( OBWamFile .NE. ' '  ) CALL READ_REC_YZ_RL
                0404      &     (OBWamFile,fp,tidalComponents,OBWam,1,nIter0,myThid )
                0405       IF ( OBWphFile .NE. ' '  ) CALL READ_REC_YZ_RL
                0406      &     (OBWphFile,fp,tidalComponents,OBWph,1,nIter0,myThid )
                0407 # endif
                0408       _BARRIER
                0409 #endif /* ALLOW_OBCS_TIDES */
                0410 
0c1665e096 Alis*0411 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
9467978093 Jean*0412 C     Only needed for Orlanski:
65adb300c0 Jean*0413       IF ( nIter0.NE.0 .OR. pickupSuff.NE.' ' ) THEN
9467978093 Jean*0414         CALL OBCS_READ_PICKUP( nIter0, myThid )
3cd87e8d30 Mart*0415       ENDIF
65adb300c0 Jean*0416 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
0c1665e096 Alis*0417 
9467978093 Jean*0418 C--   Load/compute OBCS values (initial conditions only)
65adb300c0 Jean*0419       IF ( nIter0.EQ.0 .AND. pickupSuff.EQ.' ' ) THEN
abb214f17f Alis*0420 #ifdef ALLOW_DEBUG
9467978093 Jean*0421        IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
abb214f17f Alis*0422 #endif
3a86c9b47d Oliv*0423        CALL OBCS_CALC( startTime, nIter0,
9467978093 Jean*0424      &              uVel, vVel, wVel, theta, salt, myThid )
abfe198bce Mart*0425 C     S/R OBCS_CALC is split between computing the boundary conditions
                0426 C     and adjusting them to balance the flow (and apply tides)
                0427        CALL OBCS_ADJUST( startTime, nIter0, myThid )
96bbd4e2a5 Patr*0428 
d38a1b9bc4 Jean*0429 C--   Apply OBCS values to initial conditions for consistency
                0430 C      (but initial conditions only)
abb214f17f Alis*0431 #ifdef ALLOW_DEBUG
5b187c067b Jean*0432        IF (debugMode)
c8754365e9 Jean*0433      &    CALL DEBUG_CALL('OBCS_APPLY_UV + OBCS_APPLY_TS',myThid)
abb214f17f Alis*0434 #endif
7914483c99 Mart*0435        DO bj = myByLo(myThid), myByHi(myThid)
                0436         DO bi = myBxLo(myThid), myBxHi(myThid)
c8754365e9 Jean*0437           CALL OBCS_APPLY_UV( bi, bj, 0, uVel, vVel, myThid )
10980378a3 Jean*0438           CALL OBCS_APPLY_TS( bi, bj, 0, theta, salt, myThid )
42c525bfb4 Alis*0439         ENDDO
                0440        ENDDO
0283233458 Mart*0441        IF (useOBCSprescribe) THEN
                0442 C     After applying the boundary conditions exchange the 3D-fields.
e16d78bea8 Jean*0443 C     This is only necessary of the boundary values have been read
0283233458 Mart*0444 C     from a file.
                0445 #ifdef ALLOW_DEBUG
5b187c067b Jean*0446         IF (debugMode)
c8754365e9 Jean*0447      &    CALL DEBUG_CALL('EXCHANGES in OBCS_INIT_VARIABLES',myThid)
0283233458 Mart*0448 #endif
                0449         CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
7163a40534 Jean*0450         _EXCH_XYZ_RL( theta, myThid )
                0451         _EXCH_XYZ_RL( salt , myThid )
0283233458 Mart*0452        ENDIF
                0453 C     endif start from rest
65adb300c0 Jean*0454 #ifdef ALLOW_OBCS_PRESCRIBE
e16d78bea8 Jean*0455       ELSEIF ( useOBCSprescribe ) THEN
6960d36165 Jean*0456 C-- Need this call (although loading U,V,T,S OB values is not really necessary)
                0457 C    a) OB values needed for etaH (NonLinFreeSurf) and for wVel (nonHydrostatic)
                0458 C    b) OB values needed for ptracers (in case nIter0 = PTRACERS_Iter0 <> 0)
                0459 C    c) with present implementation, only do initialisation when called
                0460 C       with myTime=startTime (S/R EXF_GETFFIELDREC, setting "first")
                0461 C       or with myIter=nIter0 (S/R OBCS_FIELDS_LOAD). And this cannot be changed
                0462 C       because of above call to OBCS_CALC(startTime,nIter0).
65adb300c0 Jean*0463         CALL OBCS_PRESCRIBE_READ( startTime, nIter0, myThid )
                0464 #endif
0283233458 Mart*0465       ENDIF
6a11665c9a Jean*0466 C--   calls to S/R OBCS_COPY_TRACER on theta & salt are no longer needed
                0467 C     with maskInC,W,S in pkg/generic_advdiff: removed
65adb300c0 Jean*0468 
7914483c99 Mart*0469 #ifdef ALLOW_PTRACERS
                0470 C     repeat everything for passive tracers
0283233458 Mart*0471       IF ( usePTRACERS ) THEN
                0472 C     catch the case when we do start from a pickup for dynamics variables
                0473 C     but initialise ptracers differently
10980378a3 Jean*0474        IF ( nIter0.EQ.PTRACERS_Iter0 ) THEN
7914483c99 Mart*0475 #ifdef ALLOW_DEBUG
6960d36165 Jean*0476         IF (debugMode) CALL DEBUG_CALL('OBCS_APPLY_PTRACER',myThid)
7914483c99 Mart*0477 #endif
                0478         DO iTracer=1,PTRACERS_numInUse
                0479          DO bj = myByLo(myThid), myByHi(myThid)
                0480           DO bi = myBxLo(myThid), myBxHi(myThid)
5b187c067b Jean*0481             CALL OBCS_APPLY_PTRACER(
6960d36165 Jean*0482      I           bi, bj, 0, iTracer,
                0483      U           ptracer(1-Olx,1-Oly,1,bi,bj,iTracer),
7914483c99 Mart*0484      I           myThid )
                0485           ENDDO
                0486          ENDDO
                0487         ENDDO
10980378a3 Jean*0488 C     endif start from rest
                0489        ENDIF
                0490        IF ( nIter0.EQ.PTRACERS_Iter0 .AND. useOBCSprescribe ) THEN
838f3e321e Mart*0491 C     After applying the boundary conditions exchange the 3D-fields.
e16d78bea8 Jean*0492 C     This is only necessary of the boundary values have been read
838f3e321e Mart*0493 C     from a file.
abb214f17f Alis*0494 #ifdef ALLOW_DEBUG
5b187c067b Jean*0495          IF (debugMode) CALL DEBUG_CALL(
0283233458 Mart*0496      &        'PTRACERS EXCHANGES in OBCS_INIT_VARIABLES',myThid)
abb214f17f Alis*0497 #endif
0ea13e5a69 Jean*0498          CALL PTRACERS_FIELDS_BLOCKING_EXCH( myThid )
6a11665c9a Jean*0499 c      ELSE
6960d36165 Jean*0500 C--   Calls to S/R OBCS_COPY_TRACER on pTracers are no longer needed
6a11665c9a Jean*0501 C     with maskInC,W,S in pkg/generic_advdiff: removed
6960d36165 Jean*0502 C-    This call was part of ptracers exchange S/R but was needed in all cases
0283233458 Mart*0503        ENDIF
                0504 C     endif usePTRACERS
838f3e321e Mart*0505       ENDIF
0283233458 Mart*0506 #endif /* ALLOW_PTRACERS */
838f3e321e Mart*0507 
42c525bfb4 Alis*0508 #endif /* ALLOW_OBCS */
96bbd4e2a5 Patr*0509 
abb214f17f Alis*0510 #ifdef ALLOW_DEBUG
                0511       IF (debugMode) CALL DEBUG_LEAVE('OBCS_INIT_VARIABLES',myThid)
                0512 #endif
42c525bfb4 Alis*0513       RETURN
                0514       END