New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 32 for trunk/NEMO/OPA_SRC/OBC – NEMO

Changeset 32 for trunk/NEMO/OPA_SRC/OBC


Ignore:
Timestamp:
2004-02-17T10:20:15+01:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE001 : First major NEMO update

Location:
trunk/NEMO/OPA_SRC/OBC
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/OBC/obc_oce.F90

    r3 r32  
    2525   !!General variables for open boundaries: 
    2626   !!-------------------------------------- 
    27    INTEGER ::              & 
    28       numrob = 51   ,      & ! logical units for open boundary input restart files 
    29       numwob = 52   ,      & ! logical units for open boundary output restart files 
    30                              ! 
    31       nbobc         ,      & ! number of open boundaries ( 1=< nbobc =< 4 )  
    32       nobc_dta      ,      & !  = 0 use the initial state as obc data 
    33        !                     !  = 1 read obc data in obcxxx.dta files 
    34       nmoisold      ,      & ! number of the last read month on the OBC 
    35       nbef, naft             ! index of the aftera and before fields on the OBC  
    36  
    37    REAL(wp) ::             & !!! open boundary namelist (namobc) 
    38       rdpein =  1.  ,      &  ! damping time scale for inflow at East open boundary 
    39       rdpwin =  1.  ,      &  !    "                      "   at West open boundary 
    40       rdpsin =  1.  ,      &  !    "                      "   at South open boundary 
    41       rdpnin =  1.  ,      &  !    "                      "   at North open boundary 
    42       rdpeob = 15.  ,      &  ! damping time scale for the climatology at East open boundary 
    43       rdpwob = 15.  ,      &  !    "                           "       at West open boundary 
    44       rdpsob = 15.  ,      &  !    "                           "       at South open boundary 
    45       rdpnob = 15.  ,      &  !    "                           "       at North open boundary 
    46       volemp =  1.            ! = 0 the total volume will have the variability of the  
    47                               !     surface Flux E-P else (volemp = 1) the volume will be constant 
    48                               ! = 1 the volume will be constant during all the integration. 
    49  
    50    LOGICAL ::              &  
    51       lfbceast, lfbcwest,  & ! logical flag for a fixed East and West open boundaries        
    52       lfbcnorth, lfbcsouth   ! logical flag for a fixed North and South open boundaries        
    53                              ! These logical flags are set to 'true' if damping time  
    54                              ! scale are set to 0 in the namelist, for both inflow and outflow). 
    55  
    56    REAL(wp), DIMENSION(jpi,jpj) :: & 
    57       obctmsk                ! mask array identical to tmask, execpt along OBC where it is set to 0 
    58                              ! it used to calculate the cumulate flux E-P in the obcvol.F90 routine 
     27   INTEGER ::              & !: * namelist ??? * 
     28      nbobc    = 1  ,      & !: number of open boundaries ( 1=< nbobc =< 4 )  
     29      nobc_dta = 0  ,      & !:  = 0 use the initial state as obc data 
     30      !                      !   = 1 read obc data in obcxxx.dta files 
     31      nmoisold      ,      & !: number of the last read month on the OBC 
     32      nbef, naft             !: index of the aftera and before fields on the OBC  
     33 
     34   REAL(wp) ::             & !!: open boundary namelist (namobc) 
     35      rdpein =  1.  ,      &  !: damping time scale for inflow at East open boundary 
     36      rdpwin =  1.  ,      &  !:    "                      "   at West open boundary 
     37      rdpsin =  1.  ,      &  !:    "                      "   at South open boundary 
     38      rdpnin =  1.  ,      &  !:    "                      "   at North open boundary 
     39      rdpeob = 15.  ,      &  !: damping time scale for the climatology at East open boundary 
     40      rdpwob = 15.  ,      &  !:    "                           "       at West open boundary 
     41      rdpsob = 15.  ,      &  !:    "                           "       at South open boundary 
     42      rdpnob = 15.  ,      &  !:    "                           "       at North open boundary 
     43      volemp =  1.            !: = 0 the total volume will have the variability of the  
     44                              !      surface Flux E-P else (volemp = 1) the volume will be constant 
     45                              !  = 1 the volume will be constant during all the integration. 
     46 
     47   LOGICAL ::              &  !: 
     48      lfbceast, lfbcwest,  &  !: logical flag for a fixed East and West open boundaries        
     49      lfbcnorth, lfbcsouth    !: logical flag for a fixed North and South open boundaries        
     50      !                       !  These logical flags are set to 'true' if damping time  
     51      !                       !  scale are set to 0 in the namelist, for both inflow and outflow). 
     52 
     53   REAL(wp), DIMENSION(jpi,jpj) :: &  !: 
     54      obctmsk                !: mask array identical to tmask, execpt along OBC where it is set to 0 
     55      !                      !  it used to calculate the cumulate flux E-P in the obcvol.F90 routine 
    5956          
    60    !!------------------------------------------------------------------------------------------- 
     57   !!---------------- 
    6158   !! Rigid lid case: 
    6259   !!---------------- 
    63    INTEGER ::   nbic ! number of isolated coastlines ( 0 <= nbic <= 3 ) 
     60   INTEGER ::   nbic !: number of isolated coastlines ( 0 <= nbic <= 3 ) 
    6461          
    65    INTEGER, DIMENSION(jpnic,0:4,3) ::   & 
    66       miic, mjic     ! position of isolated coastlines points 
    67  
    68    INTEGER, DIMENSION(0:4,3) ::   & 
    69       mnic           ! number of points on isolated coastlines 
    70  
    71    REAL(wp), DIMENSION(jpi,jpj) ::   & 
    72       gcbob          ! right hand side of the barotropic elliptic equation associated 
    73                      ! with the OBC 
     62   INTEGER, DIMENSION(jpnic,0:4,3) ::   &  !: 
     63      miic, mjic     !: position of isolated coastlines points 
     64 
     65   INTEGER, DIMENSION(0:4,3) ::   &  !: 
     66      mnic           !: number of points on isolated coastlines 
     67 
     68   REAL(wp), DIMENSION(jpi,jpj) ::   &  !: 
     69      gcbob          !: right hand side of the barotropic elliptic equation associated 
     70      !              ! with the OBC 
    7471                                              
    75    REAL(wp), DIMENSION(jpi,jpj,3) ::   & 
    76       gcfobc         ! coef. associated with the contribution of isolated coastlines  
    77                      ! to the right hand side of the barotropic elliptic equation 
    78  
    79    REAL(wp), DIMENSION(3) ::   & 
    80       gcbic          ! time variation of the barotropic stream function along the  
    81                      ! isolated coastlines  
    82  
    83    REAL(wp), DIMENSION(1) ::   & 
    84       bsfic0         ! barotropic stream function on isolated coastline 
     72   REAL(wp), DIMENSION(jpi,jpj,3) ::   &  !: 
     73      gcfobc         !: coef. associated with the contribution of isolated coastlines  
     74      !              ! to the right hand side of the barotropic elliptic equation 
     75 
     76   REAL(wp), DIMENSION(3) ::   &  !: 
     77      gcbic          !: time variation of the barotropic stream function along the  
     78      !              ! isolated coastlines  
     79 
     80   REAL(wp), DIMENSION(1) ::   &  !: 
     81      bsfic0         !: barotropic stream function on isolated coastline 
    8582          
    86    REAL(wp), DIMENSION(3) ::   & 
    87       bsfic          ! barotropic stream function on isolated coastline 
     83   REAL(wp), DIMENSION(3) ::   &  !: 
     84      bsfic          !: barotropic stream function on isolated coastline 
    8885          
    89    !!------------------------------------------------------------------------------------------- 
     86   !!-------------------- 
    9087   !! East open boundary: 
    9188   !!-------------------- 
    92    INTEGER ::   nie0  , nie1      ! do loop index in mpp case for jpieob 
    93    INTEGER ::   nie0p1, nie1p1    ! do loop index in mpp case for jpieob+1 
    94    INTEGER ::   nie0m1, nie1m1    ! do loop index in mpp case for jpieob-1 
    95    INTEGER ::   nje0  , nje1      ! do loop index in mpp case for jpjed, jpjef 
    96    INTEGER ::   nje0p1, nje1m1    ! do loop index in mpp case for jpjedp1,jpjefm1 
    97    INTEGER ::   nje1m2, nje0m1    ! do loop index in mpp case for jpjefm1-1,jpjed 
    98  
    99    REAL(wp), DIMENSION(jpj) ::    & 
    100       bsfeob              ! now barotropic stream fuction computed at the OBC. The corres- 
    101                           ! ponding bsfn will be computed by the forward time step in dynspg. 
    102  
    103    REAL(wp), DIMENSION(jpj,3,3) ::   & 
    104       bebnd               ! east boundary barotropic streamfunction over 3 rows 
    105                           ! and 3 time step (now, before, and before before) 
    106  
    107    REAL(wp), DIMENSION(jpjed:jpjef) ::   & 
    108       bfoe                ! now climatology of the east boundary barotropic stream function  
     89   INTEGER ::   nie0  , nie1      !: do loop index in mpp case for jpieob 
     90   INTEGER ::   nie0p1, nie1p1    !: do loop index in mpp case for jpieob+1 
     91   INTEGER ::   nie0m1, nie1m1    !: do loop index in mpp case for jpieob-1 
     92   INTEGER ::   nje0  , nje1      !: do loop index in mpp case for jpjed, jpjef 
     93   INTEGER ::   nje0p1, nje1m1    !: do loop index in mpp case for jpjedp1,jpjefm1 
     94   INTEGER ::   nje1m2, nje0m1    !: do loop index in mpp case for jpjefm1-1,jpjed 
     95 
     96   REAL(wp), DIMENSION(jpj) ::    &  !: 
     97      bsfeob              !: now barotropic stream fuction computed at the OBC. The corres- 
     98      !                   ! ponding bsfn will be computed by the forward time step in dynspg. 
     99 
     100   REAL(wp), DIMENSION(jpj,3,3) ::   &  !: 
     101      bebnd               !: east boundary barotropic streamfunction over 3 rows 
     102      !                   ! and 3 time step (now, before, and before before) 
     103 
     104   REAL(wp), DIMENSION(jpjed:jpjef) ::   &  !: 
     105      bfoe                !: now climatology of the east boundary barotropic stream function  
    109106      
    110    REAL(wp), DIMENSION(jpj,jpk) ::   & 
    111       ufoe, vfoe,       & ! now climatology of the east boundary velocities  
    112       tfoe, sfoe,       & ! now climatology of the east boundary temperature and salinity 
    113       uclie               ! baroclinic componant of the zonal velocity after radiation  
    114                           ! in the obcdyn.F90 routine 
    115  
    116    REAL(wp), DIMENSION(jpjglo,jpk,1) ::   & 
    117       uedta, tedta, sedta ! array used for interpolating monthly data on the east boundary 
    118  
    119    !!------------------------------------------------------------------------------------------- 
     107   REAL(wp), DIMENSION(jpj,jpk) ::   &  !: 
     108      ufoe, vfoe,       & !: now climatology of the east boundary velocities  
     109      tfoe, sfoe,       & !: now climatology of the east boundary temperature and salinity 
     110      uclie               !: baroclinic componant of the zonal velocity after radiation  
     111      !                   ! in the obcdyn.F90 routine 
     112 
     113   REAL(wp), DIMENSION(jpjglo,jpk,1) ::   &  !: 
     114      uedta, tedta, sedta !: array used for interpolating monthly data on the east boundary 
     115 
     116   !!------------------------------- 
    120117   !! Arrays for radiative East OBC:  
    121118   !!------------------------------- 
    122    !!    
    123    REAL(wp), DIMENSION(jpj,jpk,3,3) ::   & 
    124       uebnd, vebnd                  ! baroclinic u & v component of the velocity over 3 rows  
     119   REAL(wp), DIMENSION(jpj,jpk,3,3) ::   &  !: 
     120      uebnd, vebnd                  !: baroclinic u & v component of the velocity over 3 rows  
    125121                                    ! and 3 time step (now, before, and before before) 
    126122 
    127    REAL(wp), DIMENSION(jpj,jpk,2,2) ::   & 
    128       tebnd, sebnd                  ! East boundary temperature and salinity over 2 rows  
     123   REAL(wp), DIMENSION(jpj,jpk,2,2) ::   &  !: 
     124      tebnd, sebnd                  !: East boundary temperature and salinity over 2 rows  
    129125                                    ! and 2 time step (now and before) 
    130126 
    131    REAL(wp), DIMENSION(jpj,jpk) ::   & 
    132       u_cxebnd, v_cxebnd            ! Zonal component of the phase speed ratio computed with  
     127   REAL(wp), DIMENSION(jpj,jpk) ::   &  !: 
     128      u_cxebnd, v_cxebnd            !: Zonal component of the phase speed ratio computed with  
    133129                                    ! radiation of u and v velocity (respectively) at the  
    134130                                    ! east open boundary (u_cxebnd = cx rdt ) 
    135131 
    136    REAL(wp), DIMENSION(jpj,jpk) ::   & 
    137       uemsk, vemsk, temsk           ! 2D mask for the East OB 
     132   REAL(wp), DIMENSION(jpj,jpk) ::   &  !: 
     133      uemsk, vemsk, temsk           !: 2D mask for the East OB 
    138134 
    139135   ! Note that those arrays are optimized for mpp case  
    140136   ! (hence the dimension jpj is the size of one processor subdomain) 
    141137 
    142    !!------------------------------------------------------------------------------------------- 
    143    !! West open boundary: 
    144138   !!-------------------- 
    145    INTEGER ::   niw0  , niw1       ! do loop index in mpp case for jpiwob 
    146    INTEGER ::   niw0p1, niw1p1     ! do loop index in mpp case for jpiwob+1 
    147    INTEGER ::   njw0  , njw1       ! do loop index in mpp case for jpjwd, jpjwf 
    148    INTEGER ::   njw0p1, njw1m1     ! do loop index in mpp case for jpjwdp1,jpjwfm1 
    149    INTEGER ::   njw1m2, njw0m1     ! do loop index in mpp case for jpjwfm2,jpjwd 
    150  
    151    REAL(wp), DIMENSION(jpj) ::   & 
    152       bsfwob              ! now barotropic stream fuction computed at the OBC. The corres- 
    153                           ! ponding bsfn will be computed by the forward time step in dynspg. 
    154  
    155    REAL(wp), DIMENSION(jpj,3,3) ::   & 
    156       bwbnd               ! West boundary barotropic streamfunction over 
    157                           ! 3 rows and 3 time step (now, before, and before before) 
    158  
    159    REAL(wp), DIMENSION(jpjwd:jpjwf) ::   & 
    160       bfow                ! now climatology of the west boundary barotropic stream function 
    161  
    162    REAL(wp), DIMENSION(jpj,jpk) ::   & 
    163       ufow, vfow,       & ! now climatology of the west velocities  
    164       tfow, sfow,       & ! now climatology of the west temperature and salinity 
    165       ucliw               ! baroclinic componant of the zonal velocity after the radiation  
    166                           ! in the obcdyn.F90 routine 
    167  
    168    REAL(wp), DIMENSION(jpjglo,jpk,1) ::   & 
    169       uwdta, twdta, swdta ! array used for interpolating monthly data on the west boundary 
    170  
    171    !!------------------------------------------------------------------------------------------- 
    172    !! Arrays for radiative West OBC: 
     139   !! West open boundary 
     140   !!-------------------- 
     141   INTEGER ::   niw0  , niw1       !: do loop index in mpp case for jpiwob 
     142   INTEGER ::   niw0p1, niw1p1     !: do loop index in mpp case for jpiwob+1 
     143   INTEGER ::   njw0  , njw1       !: do loop index in mpp case for jpjwd, jpjwf 
     144   INTEGER ::   njw0p1, njw1m1     !: do loop index in mpp case for jpjwdp1,jpjwfm1 
     145   INTEGER ::   njw1m2, njw0m1     !: do loop index in mpp case for jpjwfm2,jpjwd 
     146 
     147   REAL(wp), DIMENSION(jpj) ::   &  !: 
     148      bsfwob              !: now barotropic stream fuction computed at the OBC. The corres- 
     149      !                   !  ponding bsfn will be computed by the forward time step in dynspg. 
     150 
     151   REAL(wp), DIMENSION(jpj,3,3) ::   &  !: 
     152      bwbnd               !: West boundary barotropic streamfunction over 
     153      !                   !  3 rows and 3 time step (now, before, and before before) 
     154 
     155   REAL(wp), DIMENSION(jpjwd:jpjwf) ::   &  !: 
     156      bfow                !: now climatology of the west boundary barotropic stream function 
     157 
     158   REAL(wp), DIMENSION(jpj,jpk) ::   &  !: 
     159      ufow, vfow,       & !: now climatology of the west velocities  
     160      tfow, sfow,       & !: now climatology of the west temperature and salinity 
     161      ucliw               !: baroclinic componant of the zonal velocity after the radiation  
     162      !                   !  in the obcdyn.F90 routine 
     163 
     164   REAL(wp), DIMENSION(jpjglo,jpk,1) ::   &  !: 
     165      uwdta, twdta, swdta !: array used for interpolating monthly data on the west boundary 
     166 
    173167   !!------------------------------- 
    174    !!    
    175    REAL(wp), DIMENSION(jpj,jpk,3,3) ::   & 
    176       uwbnd, vwbnd                  ! baroclinic u & v components of the velocity over 3 rows  
    177                                     ! and 3 time step (now, before, and before before) 
    178  
    179    REAL(wp), DIMENSION(jpj,jpk,2,2) ::   & 
    180       twbnd, swbnd                  ! west boundary temperature and salinity over 2 rows and  
    181                                     ! 2 time step (now and before) 
    182  
    183    REAL(wp), DIMENSION(jpj,jpk) ::    & 
    184       u_cxwbnd, v_cxwbnd            ! Zonal component of the phase speed ratio computed with  
    185                                     ! radiation of zonal and meridional velocity (respectively)  
    186                                     ! at the west open boundary (u_cxwbnd = cx rdt ) 
    187  
    188    REAL(wp), DIMENSION(jpj,jpk) ::    & 
    189       uwmsk, vwmsk, twmsk           ! 2D mask for the West OB 
     168   !! Arrays for radiative West OBC 
     169   !!------------------------------- 
     170   REAL(wp), DIMENSION(jpj,jpk,3,3) ::   &  !: 
     171      uwbnd, vwbnd                  !: baroclinic u & v components of the velocity over 3 rows  
     172      !                             !  and 3 time step (now, before, and before before) 
     173 
     174   REAL(wp), DIMENSION(jpj,jpk,2,2) ::   &  !: 
     175      twbnd, swbnd                  !: west boundary temperature and salinity over 2 rows and  
     176      !                             !  2 time step (now and before) 
     177 
     178   REAL(wp), DIMENSION(jpj,jpk) ::    &  !: 
     179      u_cxwbnd, v_cxwbnd            !: Zonal component of the phase speed ratio computed with  
     180      !                             !  radiation of zonal and meridional velocity (respectively)  
     181      !                             !  at the west open boundary (u_cxwbnd = cx rdt ) 
     182 
     183   REAL(wp), DIMENSION(jpj,jpk) ::    &  !: 
     184      uwmsk, vwmsk, twmsk           !: 2D mask for the West OB 
    190185 
    191186   ! Note that those arrays are optimized for mpp case  
    192187   ! (hence the dimension jpj is the size of one processor subdomain) 
    193188 
    194    !!------------------------------------------------------------------------------------------- 
    195    !! North open boundary: 
    196189   !!--------------------- 
    197    INTEGER ::   nin0  , nin1       ! do loop index in mpp case for jpind, jpinf 
    198    INTEGER ::   nin0p1, nin1m1     ! do loop index in mpp case for jpindp1, jpinfm1 
    199    INTEGER ::   nin1m2, nin0m1     ! do loop index in mpp case for jpinfm1-1,jpind 
    200    INTEGER ::   njn0  , njn1       ! do loop index in mpp case for jpnob 
    201    INTEGER ::   njn0p1, njn1p1     ! do loop index in mpp case for jpnob+1 
    202    INTEGER ::   njn0m1, njn1m1     ! do loop index in mpp case for jpnob-1 
    203  
    204    REAL(wp), DIMENSION(jpi) ::   & 
    205       bsfnob              ! now barotropic stream fuction computed at the OBC. The corres- 
    206                           ! ponding bsfn will be computed by the forward time step in dynspg. 
    207  
    208    REAL(wp), DIMENSION(jpi,3,3) ::   & 
    209       bnbnd               ! north boundary barotropic streamfunction over 
    210                           ! 3 rows and 3 time step (now, before, and before before) 
    211  
    212    REAL(wp), DIMENSION(jpind:jpinf) ::   & 
    213       bfon                ! now climatology of the north boundary barotropic stream function 
    214  
    215    REAL(wp), DIMENSION(jpi,jpk) ::   &   
    216       ufon, vfon,       & ! now climatology of the north boundary velocities 
    217       tfon, sfon,       & ! now climatology of the north boundary temperature and salinity 
    218       vclin               ! baroclinic componant of the meridian velocity after the radiation 
    219                           ! in yhe obcdyn.F90 routine 
    220  
    221    REAL(wp), DIMENSION(jpiglo,jpk,1) ::   & 
    222       vndta, tndta, sndta ! array used for interpolating monthly data on the north boundary 
    223  
    224    !!------------------------------------------------------------------------------------------- 
    225    !! Arrays for radiative North OBC: 
     190   !! North open boundary 
     191   !!--------------------- 
     192   INTEGER ::   nin0  , nin1       !: do loop index in mpp case for jpind, jpinf 
     193   INTEGER ::   nin0p1, nin1m1     !: do loop index in mpp case for jpindp1, jpinfm1 
     194   INTEGER ::   nin1m2, nin0m1     !: do loop index in mpp case for jpinfm1-1,jpind 
     195   INTEGER ::   njn0  , njn1       !: do loop index in mpp case for jpnob 
     196   INTEGER ::   njn0p1, njn1p1     !: do loop index in mpp case for jpnob+1 
     197   INTEGER ::   njn0m1, njn1m1     !: do loop index in mpp case for jpnob-1 
     198 
     199   REAL(wp), DIMENSION(jpi) ::   &  !: 
     200      bsfnob              !: now barotropic stream fuction computed at the OBC. The corres- 
     201      !                   !  ponding bsfn will be computed by the forward time step in dynspg. 
     202 
     203   REAL(wp), DIMENSION(jpi,3,3) ::   &  !: 
     204      bnbnd               !: north boundary barotropic streamfunction over 
     205      !                   !  3 rows and 3 time step (now, before, and before before) 
     206 
     207   REAL(wp), DIMENSION(jpind:jpinf) ::   &  !: 
     208      bfon                !: now climatology of the north boundary barotropic stream function 
     209 
     210   REAL(wp), DIMENSION(jpi,jpk) ::   &    !: 
     211      ufon, vfon,       & !: now climatology of the north boundary velocities 
     212      tfon, sfon,       & !: now climatology of the north boundary temperature and salinity 
     213      vclin               !: baroclinic componant of the meridian velocity after the radiation 
     214      !                   !  in yhe obcdyn.F90 routine 
     215 
     216   REAL(wp), DIMENSION(jpiglo,jpk,1) ::   &  !: 
     217      vndta, tndta, sndta !: array used for interpolating monthly data on the north boundary 
     218 
     219   !!-------------------------------- 
     220   !! Arrays for radiative North OBC 
    226221   !!-------------------------------- 
    227222   !!    
    228    REAL(wp), DIMENSION(jpi,jpk,3,3) ::   &  
    229       unbnd, vnbnd                  ! baroclinic u & v components of the velocity over 3 
    230                                     ! rows and 3 time step (now, before, and before before) 
    231  
    232    REAL(wp), DIMENSION(jpi,jpk,2,2) ::   &  
    233       tnbnd, snbnd                  ! north boundary temperature and salinity over 
    234                                     ! 2 rows and 2 time step (now and before) 
    235  
    236    REAL(wp), DIMENSION(jpi,jpk) ::   &    
    237       u_cynbnd, v_cynbnd            ! Meridional component of the phase speed ratio compu- 
    238                                     ! ted with radiation of zonal and meridional velocity  
    239                                     ! (respectively) at the north OB (u_cynbnd = cx rdt ) 
    240  
    241    REAL(wp), DIMENSION(jpi,jpk) ::   & 
    242       unmsk, vnmsk, tnmsk           ! 2D mask for the North OB 
     223   REAL(wp), DIMENSION(jpi,jpk,3,3) ::   &   !: 
     224      unbnd, vnbnd                  !: baroclinic u & v components of the velocity over 3 
     225      !                             ! rows and 3 time step (now, before, and before before) 
     226 
     227   REAL(wp), DIMENSION(jpi,jpk,2,2) ::   &   !: 
     228      tnbnd, snbnd                  !: north boundary temperature and salinity over 
     229      !                             ! 2 rows and 2 time step (now and before) 
     230 
     231   REAL(wp), DIMENSION(jpi,jpk) ::   &     !: 
     232      u_cynbnd, v_cynbnd            !: Meridional component of the phase speed ratio compu- 
     233      !                             ! ted with radiation of zonal and meridional velocity  
     234      !                             ! (respectively) at the north OB (u_cynbnd = cx rdt ) 
     235 
     236   REAL(wp), DIMENSION(jpi,jpk) ::   &  !: 
     237      unmsk, vnmsk, tnmsk           !: 2D mask for the North OB 
    243238 
    244239   ! Note that those arrays are optimized for mpp case  
    245240   ! (hence the dimension jpj is the size of one processor subdomain) 
    246241    
    247    !!------------------------------------------------------------------------------------------- 
    248    !! South open boundary: 
    249242   !!--------------------- 
    250    INTEGER ::   nis0  , nis1       ! do loop index in mpp case for jpisd, jpisf 
    251    INTEGER ::   nis0p1, nis1m1     ! do loop index in mpp case for jpisdp1, jpisfm1 
    252    INTEGER ::   nis1m2, nis0m1     ! do loop index in mpp case for jpisfm1-1,jpisd 
    253    INTEGER ::   njs0  , njs1       ! do loop index in mpp case for jpsob 
    254    INTEGER ::   njs0p1, njs1p1     ! do loop index in mpp case for jpsob+1 
    255  
    256    REAL(wp), DIMENSION(jpi) ::    &  
    257       bsfsob              ! now barotropic stream fuction computed at the OBC.The corres- 
    258                           ! ponding bsfn will be computed by the forward time step in dynspg. 
    259    REAL(wp), DIMENSION(jpi,3,3) ::   &  
    260       bsbnd               ! south boundary barotropic stream function over 
    261                           ! 3 rows and 3 time step (now, before, and before before) 
    262  
    263    REAL(wp), DIMENSION(jpisd:jpisf) ::    &  
    264       bfos                ! now climatology of the south boundary barotropic stream function 
    265  
    266    REAL(wp), DIMENSION(jpi,jpk) ::    &  
    267       ufos, vfos,       & ! now climatology of the south boundary velocities  
    268       tfos, sfos,       & ! now climatology of the south boundary temperature and salinity 
    269       vclis               ! baroclinic componant of the meridian velocity after the radiation  
    270                           ! in the obcdyn.F90 routine 
    271  
    272    REAL(wp), DIMENSION(jpiglo,jpk,1) ::    &   
    273       vsdta, tsdta, ssdta   ! array used for interpolating monthly data on the south boundary 
    274  
    275    !!------------------------------------------------------------------------------------------- 
    276    !! Arrays for radiative South OBC: 
     243   !! South open boundary 
     244   !!--------------------- 
     245   INTEGER ::   nis0  , nis1       !: do loop index in mpp case for jpisd, jpisf 
     246   INTEGER ::   nis0p1, nis1m1     !: do loop index in mpp case for jpisdp1, jpisfm1 
     247   INTEGER ::   nis1m2, nis0m1     !: do loop index in mpp case for jpisfm1-1,jpisd 
     248   INTEGER ::   njs0  , njs1       !: do loop index in mpp case for jpsob 
     249   INTEGER ::   njs0p1, njs1p1     !: do loop index in mpp case for jpsob+1 
     250 
     251   REAL(wp), DIMENSION(jpi) ::    &   !: 
     252      bsfsob              !: now barotropic stream fuction computed at the OBC.The corres- 
     253      !                   !  ponding bsfn will be computed by the forward time step in dynspg. 
     254   REAL(wp), DIMENSION(jpi,3,3) ::   &   !: 
     255      bsbnd               !: south boundary barotropic stream function over 
     256      !                   !  3 rows and 3 time step (now, before, and before before) 
     257 
     258   REAL(wp), DIMENSION(jpisd:jpisf) ::    &   !: 
     259      bfos                !: now climatology of the south boundary barotropic stream function 
     260 
     261   REAL(wp), DIMENSION(jpi,jpk) ::    &   !: 
     262      ufos, vfos,       & !: now climatology of the south boundary velocities  
     263      tfos, sfos,       & !: now climatology of the south boundary temperature and salinity 
     264      vclis               !: baroclinic componant of the meridian velocity after the radiation  
     265      !                   !  in the obcdyn.F90 routine 
     266 
     267   REAL(wp), DIMENSION(jpiglo,jpk,1) ::    &    !: 
     268      vsdta, tsdta, ssdta   !: array used for interpolating monthly data on the south boundary 
     269 
     270   !!-------------------------------- 
     271   !! Arrays for radiative South OBC 
    277272   !!-------------------------------- 
    278273   !!                        computed by the forward time step in dynspg. 
    279    REAL(wp), DIMENSION(jpi,jpk,3,3) ::   &  
    280       usbnd, vsbnd                  ! baroclinic u & v components of the velocity over 3  
    281                                     ! rows and 3 time step (now, before, and before before) 
    282  
    283    REAL(wp), DIMENSION(jpi,jpk,2,2) ::   & 
    284       tsbnd, ssbnd                  ! south boundary temperature and salinity over 
    285                                     ! 2 rows and 2 time step (now and before) 
    286  
    287    REAL(wp), DIMENSION(jpi,jpk) ::   & 
    288       u_cysbnd, v_cysbnd            ! Meridional component of the phase speed ratio compu- 
    289                                     ! ted with radiation of zonal and meridional velocity  
    290                                     ! (repsectively) at the south OB (u_cynbnd = cx rdt ) 
    291  
    292    REAL(wp), DIMENSION(jpi,jpk) ::   & 
    293       usmsk, vsmsk, tsmsk           ! 2D mask for the South OB 
     274   REAL(wp), DIMENSION(jpi,jpk,3,3) ::   &   !: 
     275      usbnd, vsbnd                  !: baroclinic u & v components of the velocity over 3  
     276      !                             ! rows and 3 time step (now, before, and before before) 
     277 
     278   REAL(wp), DIMENSION(jpi,jpk,2,2) ::   &  !: 
     279      tsbnd, ssbnd                  !: south boundary temperature and salinity over 
     280      !                             ! 2 rows and 2 time step (now and before) 
     281 
     282   REAL(wp), DIMENSION(jpi,jpk) ::   &  !: 
     283      u_cysbnd, v_cysbnd            !: Meridional component of the phase speed ratio compu- 
     284      !                             ! ted with radiation of zonal and meridional velocity  
     285      !                             ! (repsectively) at the south OB (u_cynbnd = cx rdt ) 
     286 
     287   REAL(wp), DIMENSION(jpi,jpk) ::   &  !: 
     288      usmsk, vsmsk, tsmsk           !: 2D mask for the South OB 
    294289 
    295290   ! Note that those arrays are optimized for mpp case  
     
    301296   !!---------------------------------------------------------------------- 
    302297#endif 
     298 
    303299   !!====================================================================== 
    304300END MODULE obc_oce 
  • trunk/NEMO/OPA_SRC/OBC/obc_par.F90

    r3 r32  
    1818   PUBLIC 
    1919 
    20    LOGICAL, PUBLIC, PARAMETER ::   lk_obc = .TRUE.   ! Ocean Boundary Condition flag 
     20   LOGICAL, PUBLIC, PARAMETER ::   lk_obc = .TRUE.   !: Ocean Boundary Condition flag 
    2121 
    2222# if defined key_eel_r5 
     
    3131   !!--------------------------------------------------------------------- 
    3232   !! * EAST open boundary 
    33    LOGICAL, PARAMETER ::     & 
    34       lpeastobc = .FALSE.       ! to active or not the East open boundary 
    35    INTEGER, PARAMETER ::     & 
    36       jpieob  = jpiglo-2,    &  ! i-localization of the East open boundary (must be ocean U-point) 
    37       jpjed   =        2,    &  ! j-starting indice of the East open boundary (must be land T-point) 
    38       jpjef   = jpjglo-1,    &  ! j-ending   indice of the East open boundary (must be land T-point) 
    39       jpjedp1 =  jpjed+1,    &  ! first ocean point         "                 " 
    40       jpjefm1 =  jpjef-1        ! last  ocean point         "                 " 
     33   LOGICAL, PARAMETER ::     &  !: 
     34      lpeastobc = .FALSE.       !: to active or not the East open boundary 
     35   INTEGER, PARAMETER ::     &  !: 
     36      jpieob  = jpiglo-2,    &  !: i-localization of the East open boundary (must be ocean U-point) 
     37      jpjed   =        2,    &  !: j-starting indice of the East open boundary (must be land T-point) 
     38      jpjef   = jpjglo-1,    &  !: j-ending   indice of the East open boundary (must be land T-point) 
     39      jpjedp1 =  jpjed+1,    &  !: first ocean point         "                 " 
     40      jpjefm1 =  jpjef-1        !: last  ocean point         "                 " 
    4141 
    4242   !! * WEST open boundary 
    43    LOGICAL, PARAMETER ::     & 
    44       lpwestobc = .FALSE.       ! to active or not the West open boundary 
    45    INTEGER, PARAMETER ::     & 
    46       jpiwob  =          2,    &  ! i-localization of the West open boundary (must be ocean U-point) 
    47       jpjwd   =          2,    &  ! j-starting indice of the West open boundary (must be land T-point) 
    48       jpjwf   = jpjglo-1,    &  ! j-ending   indice of the West open boundary (must be land T-point) 
    49       jpjwdp1 =  jpjwd+1,    &  ! first ocean point         "                 " 
    50       jpjwfm1 =  jpjwf-1        ! last  ocean point         "                 " 
     43   LOGICAL, PARAMETER ::     &  !: 
     44      lpwestobc = .FALSE.       !: to active or not the West open boundary 
     45   INTEGER, PARAMETER ::     &  !: 
     46      jpiwob  =          2,    &  !: i-localization of the West open boundary (must be ocean U-point) 
     47      jpjwd   =          2,    &  !: j-starting indice of the West open boundary (must be land T-point) 
     48      jpjwf   = jpjglo-1,    &  !: j-ending   indice of the West open boundary (must be land T-point) 
     49      jpjwdp1 =  jpjwd+1,    &  !: first ocean point         "                 " 
     50      jpjwfm1 =  jpjwf-1        !: last  ocean point         "                 " 
    5151 
    5252   !! * NORTH open boundary 
    53    LOGICAL, PARAMETER ::    & 
    54       lpnorthobc = .FALSE.      ! to active or not the North open boundary 
    55    INTEGER, PARAMETER ::     & 
    56       jpjnob  = jpjglo-2,    &  ! j-localization of the North open boundary (must be ocean V-point) 
    57       jpind   =        2,    &  ! i-starting indice of the North open boundary (must be land T-point) 
    58       jpinf   = jpiglo-1,    &  ! i-ending   indice of the North open boundary (must be land T-point) 
    59       jpindp1 =  jpind+1,    &  ! first ocean point         "                 " 
    60       jpinfm1 =  jpinf-1        ! last  ocean point         "                 " 
     53   LOGICAL, PARAMETER ::     &  !: 
     54      lpnorthobc = .FALSE.      !: to active or not the North open boundary 
     55   INTEGER, PARAMETER ::     &  !: 
     56      jpjnob  = jpjglo-2,    &  !: j-localization of the North open boundary (must be ocean V-point) 
     57      jpind   =        2,    &  !: i-starting indice of the North open boundary (must be land T-point) 
     58      jpinf   = jpiglo-1,    &  !: i-ending   indice of the North open boundary (must be land T-point) 
     59      jpindp1 =  jpind+1,    &  !: first ocean point         "                 " 
     60      jpinfm1 =  jpinf-1        !: last  ocean point         "                 " 
    6161 
    6262   !! * SOUTH open boundary 
    63    LOGICAL, PARAMETER ::     & 
    64       lpsouthobc = .FALSE.      ! to active or not the South open boundary 
    65    INTEGER, PARAMETER ::     & 
    66       jpjsob  =        2,    &  ! j-localization of the South open boundary (must be ocean V-point) 
    67       jpisd   =        2,    &  ! i-starting indice of the South open boundary (must be land T-point) 
    68       jpisf   = jpiglo-1,    &  ! i-ending   indice of the South open boundary (must be land T-point) 
    69       jpisdp1 =  jpisd+1,    &  ! first ocean point         "                 " 
    70       jpisfm1 =  jpisf-1        ! last  ocean point         "                 " 
     63   LOGICAL, PARAMETER ::     &  !: 
     64      lpsouthobc = .FALSE.      !: to active or not the South open boundary 
     65   INTEGER, PARAMETER ::     &  !: 
     66      jpjsob  =        2,    &  !: j-localization of the South open boundary (must be ocean V-point) 
     67      jpisd   =        2,    &  !: i-starting indice of the South open boundary (must be land T-point) 
     68      jpisf   = jpiglo-1,    &  !: i-ending   indice of the South open boundary (must be land T-point) 
     69      jpisdp1 =  jpisd+1,    &  !: first ocean point         "                 " 
     70      jpisfm1 =  jpisf-1        !: last  ocean point         "                 " 
    7171    
    72    INTEGER, PARAMETER ::     & 
    73       jpnic = 2700              ! maximum number of isolated coastlines points  
     72   INTEGER, PARAMETER ::     &  !: 
     73      jpnic = 2700              !: maximum number of isolated coastlines points  
    7474 
    7575# endif 
     
    7979   !!   Default option :                         NO open boundary condition 
    8080   !!---------------------------------------------------------------------- 
    81    LOGICAL, PUBLIC, PARAMETER ::   lk_obc = .FALSE.  ! Ocean Boundary Condition flag 
     81   LOGICAL, PUBLIC, PARAMETER ::   lk_obc = .FALSE.  !: Ocean Boundary Condition flag 
    8282#endif 
    8383 
  • trunk/NEMO/OPA_SRC/OBC/obcdom.F90

    r3 r32  
    1313   USE phycst          ! physical constants 
    1414   USE obc_oce         ! ocean open boundary conditions 
     15   USE in_out_manager  ! I/O manager 
     16   USE lib_mpp         ! distributed memory computing library 
    1517 
    1618   IMPLICIT NONE 
     
    154156   ! in case of zoom, icoast must be set to 0 on the domain border 
    155157   ! it must be the same for the bathymetry 
    156    IF (lzoom-w) icoast(jpiglo            ,:) = 0  
    157    IF (lzoom-e) icoast(jpiglo +jpizoom -1,:) = 0  
    158    IF (lzoom-s) icoast(:,jpjzoom           ) = 0  
    159    IF (lzoom-n) icoast(:,jpjglo+jpjzoom -1 ) = 0  
     158   IF (lzoom_w) icoast(jpiglo            ,:) = 0  
     159   IF (lzoom_e) icoast(jpiglo +jpizoom -1,:) = 0  
     160   IF (lzoom_s) icoast(:,jpjzoom           ) = 0  
     161   IF (lzoom_n) icoast(:,jpjglo+jpjzoom -1 ) = 0  
    160162 
    161163      DO jj = 1, jpjglo 
     
    179181         END DO 
    180182      END DO 
    181 # if defined key_mpp  
    182       CALL mpp_sum(icheck)  
    183 # endif 
     183      IF( lk_mpp )   CALL mpp_sum(icheck)   ! sum over the global domain 
     184 
    184185      IF( icheck /= 0 ) THEN 
    185186         IF(lwp) WRITE(numout,cform_err) 
  • trunk/NEMO/OPA_SRC/OBC/obcdyn.F90

    r3 r32  
    2020   USE phycst          ! physical constants 
    2121   USE obc_oce         ! ocean open boundary conditions 
     22   USE lbclnk          ! ??? 
    2223   USE lib_mpp         ! ??? 
    2324   USE obccli          ! ocean open boundary conditions: climatology 
     
    125126      END IF 
    126127 
    127 # if defined key_mpp 
    128       !!bug ??? 
    129       IF( kt >= nit000+3 .AND. ln_rstart ) THEN 
    130          CALL mpp_lnk_3d( ub, 'U', -1. ) 
    131          CALL mpp_lnk_3d( vb, 'V', -1. ) 
    132       END IF 
    133       CALL mpp_lnk_3d( ua, 'U', -1. ) 
    134       CALL mpp_lnk_3d( va, 'V', -1. ) 
    135 # endif 
     128      IF( lk_mpp ) THEN 
     129         IF( kt >= nit000+3 .AND. ln_rstart ) THEN 
     130            CALL lbc_lnk( ub, 'U', -1. ) 
     131            CALL lbc_lnk( vb, 'V', -1. ) 
     132         END IF 
     133         CALL lbc_lnk( ua, 'U', -1. ) 
     134         CALL lbc_lnk( va, 'V', -1. ) 
     135      ENDIF 
     136 
    136137   END SUBROUTINE obc_dyn 
    137138 
     139 
    138140   SUBROUTINE obc_dyn_east ( kt ) 
    139141      !!------------------------------------------------------------------------------ 
    140       !!                     SUBROUTINE obc_dyn_east 
    141       !!                    ************************* 
     142      !!                  ***  SUBROUTINE obc_dyn_east  *** 
     143      !!               
    142144      !! ** Purpose : 
    143145      !!      Apply the radiation algorithm on east OBC velocities ua, va using the  
     
    157159      !! * Local declaration 
    158160      REAL(wp) ::   z05cx, ztau, zin 
    159  
    160       !!------------------------------------------------------------------------------ 
    161       !!  OPA 8.5, LODYC-IPSL (2002) 
    162161      !!------------------------------------------------------------------------------ 
    163162 
     
    484483      !! * Local declaration 
    485484      REAL(wp) ::   z05cx, ztau, zin 
    486  
    487       !!------------------------------------------------------------------------------ 
    488       !!  OPA 8.5, LODYC-IPSL (2002) 
    489485      !!------------------------------------------------------------------------------ 
    490486 
  • trunk/NEMO/OPA_SRC/OBC/obcrad.F90

    r3 r32  
    7171      !!---------------------------------------------------------------------- 
    7272 
    73       ! 1. East open boundary 
    74       ! --------------------- 
    75  
    76       IF( lpeastobc .AND. ( .NOT. lfbceast ) ) THEN 
    77          CALL obc_rad_east( kt ) 
    78       END IF 
    79  
    80       ! 2. West open boundary 
    81       ! --------------------- 
    82  
    83       IF( lpwestobc .AND. ( .NOT. lfbcwest ) ) THEN 
    84          CALL obc_rad_west( kt ) 
    85       END IF 
    86  
    87       ! 3. North open boundary 
    88       ! --------------------- 
    89        
    90       IF( lpnorthobc .AND. ( .NOT. lfbcnorth ) ) THEN 
    91          CALL obc_rad_north( kt ) 
    92       END IF 
    93  
    94       ! 4. South open boundary 
    95       ! --------------------- 
    96        
    97       IF( lpsouthobc .AND. ( .NOT. lfbcsouth ) ) THEN 
    98          CALL obc_rad_south( kt ) 
    99       END IF 
     73      IF( lpeastobc  .AND. .NOT.lfbceast  )   CALL obc_rad_east ( kt )   ! East open boundary 
     74 
     75      IF( lpwestobc  .AND. .NOT.lfbcwest  )   CALL obc_rad_west ( kt )   ! West open boundary 
     76 
     77      IF( lpnorthobc .AND. .NOT.lfbcnorth )   CALL obc_rad_north( kt )   ! North open boundary 
     78 
     79      IF( lpsouthobc .AND. .NOT.lfbcsouth )   CALL obc_rad_south( kt )   ! South open boundary 
    10080 
    10181   END SUBROUTINE obc_rad 
    10282 
     83 
    10384   SUBROUTINE obc_rad_east ( kt ) 
    10485      !!------------------------------------------------------------------------------ 
    105       !!                     SUBROUTINE obc_rad_east 
    106       !!                    ************************* 
     86      !!                     ***  SUBROUTINE obc_rad_east  *** 
     87      !!                    
    10788      !! ** Purpose : 
    10889      !!      Perform swap of arrays to calculate radiative phase speeds at the open  
     
    121102 
    122103      !! * Local declarations 
    123       INTEGER ::   ij, ii 
    124  
     104      INTEGER  ::   ij 
    125105      REAL(wp) ::   z05cx, zdt, z4nor2, z2dx, z2dy 
    126106      REAL(wp) ::   zucb, zucbm, zucbm2 
    127  
    128       !!------------------------------------------------------------------------------ 
    129       !!  OPA 8.5, LODYC-IPSL (2002) 
    130107      !!------------------------------------------------------------------------------ 
    131108 
     
    178155            END DO 
    179156         END DO 
    180 # ifdef key_mpp 
    181          CALL mppobc(uebnd,jpjed,jpjef,jpieob,jpk*3*3,2,jpj) 
    182 # endif 
     157         IF( lk_mpp )   CALL mppobc(uebnd,jpjed,jpjef,jpieob,jpk*3*3,2,jpj) 
     158 
    183159         ! ... extremeties nie0, nie1 
    184160         ij = jpjed +1 - njmpp 
     
    221197            END DO 
    222198         END DO 
    223 # ifdef key_mpp 
    224          CALL mppobc(vebnd,jpjed,jpjef,jpieob+1,jpk*3*3,2,jpj) 
    225 # endif 
     199         IF( lk_mpp )   CALL mppobc(vebnd,jpjed,jpjef,jpieob+1,jpk*3*3,2,jpj) 
     200 
    226201         !... extremeties nie0, nie1 
    227202         ij = jpjed +1 - njmpp 
     
    263238            END DO 
    264239         END DO 
    265 # ifdef key_mpp 
    266          CALL mppobc(tebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 
    267          CALL mppobc(sebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 
    268 # endif 
     240         IF( lk_mpp )   CALL mppobc(tebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 
     241         IF( lk_mpp )   CALL mppobc(sebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 
     242 
    269243         ! ... extremeties nie0, nie1 
    270244         ij = jpjed +1 - njmpp 
     
    365339            END DO 
    366340         END DO 
    367 # if defined key_mpp 
    368          CALL mppobc(v_cxebnd,jpjed,jpjef,jpieob+1,jpk,2,jpj) 
    369 # endif 
     341         IF( lk_mpp )   CALL mppobc(v_cxebnd,jpjed,jpjef,jpieob+1,jpk,2,jpj) 
     342 
    370343         ! ... extremeties nie0, nie1 
    371344         ij = jpjed +1 - njmpp 
     
    386359   END SUBROUTINE obc_rad_east 
    387360 
     361 
    388362   SUBROUTINE obc_rad_west ( kt ) 
    389363      !!------------------------------------------------------------------------------ 
    390       !!                     SUBROUTINE obc_rad_west 
    391       !!                    ************************* 
     364      !!                  ***  SUBROUTINE obc_rad_west  *** 
     365      !!                     
    392366      !! ** Purpose : 
    393367      !!      Perform swap of arrays to calculate radiative phase speeds at the open  
     
    406380 
    407381      !! * Local declarations 
    408       INTEGER ::   ij, ii 
    409  
     382      INTEGER ::   ij 
    410383      REAL(wp) ::   z05cx, zdt, z4nor2, z2dx, z2dy 
    411384      REAL(wp) ::   zucb, zucbm, zucbm2 
    412  
    413       !!------------------------------------------------------------------------------ 
    414       !!  OPA 8.5, LODYC-IPSL (2002) 
    415385      !!------------------------------------------------------------------------------ 
    416386 
     
    465435            END DO 
    466436         END DO 
    467 # if defined key_mpp 
    468          CALL mppobc(uwbnd,jpjwd,jpjwf,jpiwob,jpk*3*3,2,jpj) 
    469 # endif 
     437         IF( lk_mpp )   CALL mppobc(uwbnd,jpjwd,jpjwf,jpiwob,jpk*3*3,2,jpj) 
     438 
    470439         ! ... extremeties niw0, niw1 
    471440         ij = jpjwd +1 - njmpp 
     
    508477            END DO 
    509478         END DO 
    510 # if defined key_mpp 
    511          CALL mppobc(vwbnd,jpjwd,jpjwf,jpiwob,jpk*3*3,2,jpj) 
    512 # endif 
     479         IF( lk_mpp )   CALL mppobc(vwbnd,jpjwd,jpjwf,jpiwob,jpk*3*3,2,jpj) 
     480 
    513481         ! ... extremeties niw0, niw1  
    514482         ij = jpjwd +1 - njmpp  
     
    550518            END DO 
    551519         END DO 
    552 # if defined key_mpp 
    553          CALL mppobc(twbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 
    554          CALL mppobc(swbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 
    555 # endif 
     520         IF( lk_mpp )   CALL mppobc(twbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 
     521         IF( lk_mpp )   CALL mppobc(swbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 
     522 
    556523         ! ... extremeties niw0, niw1 
    557524         ij = jpjwd +1 - njmpp 
     
    655622            END DO 
    656623         END DO 
    657 # if defined key_mpp 
    658          CALL mppobc(v_cxwbnd,jpjwd,jpjwf,jpiwob,jpk,2,jpj) 
    659 # endif 
     624         IF( lk_mpp )   CALL mppobc(v_cxwbnd,jpjwd,jpjwf,jpiwob,jpk,2,jpj) 
     625 
    660626         ! ... extremeties niw0, niw1 
    661627         ij = jpjwd +1 - njmpp 
     
    676642   END SUBROUTINE obc_rad_west 
    677643 
     644 
    678645   SUBROUTINE obc_rad_north ( kt ) 
    679646      !!------------------------------------------------------------------------------ 
    680       !!                     SUBROUTINE obc_rad_north 
    681       !!                    ************************* 
     647      !!                  ***  SUBROUTINE obc_rad_north  *** 
     648      !!            
    682649      !! ** Purpose : 
    683650      !!      Perform swap of arrays to calculate radiative phase speeds at the open  
     
    696663 
    697664      !! * Local declarations 
    698       INTEGER ::   ij, ii 
    699  
     665      INTEGER  ::   ii 
    700666      REAL(wp) ::   z05cx, zdt, z4nor2, z2dx, z2dy 
    701667      REAL(wp) ::   zvcb, zvcbm, zvcbm2 
    702  
    703       !!------------------------------------------------------------------------------ 
    704       !!  OPA 8.5, LODYC-IPSL (2002) 
    705668      !!------------------------------------------------------------------------------ 
    706669 
     
    736699            END DO 
    737700         END DO 
    738 # if defined key_mpp 
    739          CALL mppobc(unbnd,jpind,jpinf,jpjnob+1,jpk*3*3,1,jpi) 
    740 # endif 
     701         IF( lk_mpp )   CALL mppobc(unbnd,jpind,jpinf,jpjnob+1,jpk*3*3,1,jpi) 
     702 
    741703         ! ... extremeties njn0,njn1  
    742704         ii = jpind + 1 - nimpp  
     
    798760            END DO 
    799761         END DO 
    800 # if defined key_mpp 
    801          CALL mppobc(vnbnd,jpind,jpinf,jpjnob,jpk*3*3,1,jpi) 
    802 # endif 
     762         IF( lk_mpp )   CALL mppobc(vnbnd,jpind,jpinf,jpjnob,jpk*3*3,1,jpi) 
     763 
    803764         ! ... extremeties njn0,njn1 
    804765         ii = jpind + 1 - nimpp 
     
    840801            END DO 
    841802         END DO 
    842 # if defined key_mpp 
    843          CALL mppobc(tnbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 
    844          CALL mppobc(snbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 
    845 # endif 
     803         IF( lk_mpp )   CALL mppobc(tnbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 
     804         IF( lk_mpp )   CALL mppobc(snbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 
     805 
    846806         ! ... extremeties  njn0,njn1 
    847807         ii = jpind + 1 - nimpp 
     
    908868            END DO 
    909869         END DO 
    910 # if defined key_mpp 
    911          CALL mppobc(u_cynbnd,jpind,jpinf,jpjnob+1,jpk,1,jpi) 
    912 # endif 
     870         IF( lk_mpp )   CALL mppobc(u_cynbnd,jpind,jpinf,jpjnob+1,jpk,1,jpi) 
     871 
    913872         ! ... extremeties  njn0,njn1 
    914873         ii = jpind + 1 - nimpp 
     
    973932   END SUBROUTINE obc_rad_north 
    974933 
     934 
    975935   SUBROUTINE obc_rad_south ( kt ) 
    976936      !!------------------------------------------------------------------------------ 
    977       !!                     SUBROUTINE obc_rad_south 
    978       !!                    ************************* 
     937      !!                  ***  SUBROUTINE obc_rad_south  *** 
     938      !!            
    979939      !! ** Purpose : 
    980940      !!      Perform swap of arrays to calculate radiative phase speeds at the open  
     
    993953 
    994954      !! * Local declarations 
    995       INTEGER ::   ij, ii 
    996  
     955      INTEGER ::   ii 
    997956      REAL(wp) ::   z05cx, zdt, z4nor2, z2dx, z2dy 
    998957      REAL(wp) ::   zvcb, zvcbm, zvcbm2 
    999  
    1000       !!------------------------------------------------------------------------------ 
    1001       !!  OPA 8.5, LODYC-IPSL (2002) 
    1002958      !!------------------------------------------------------------------------------ 
    1003959 
     
    1033989            END DO 
    1034990         END DO 
    1035 # if defined key_mpp 
    1036          CALL mppobc(usbnd,jpisd,jpisf,jpjsob,jpk*3*3,1,jpi) 
    1037 # endif 
     991         IF( lk_mpp )   CALL mppobc(usbnd,jpisd,jpisf,jpjsob,jpk*3*3,1,jpi) 
     992 
    1038993         ! ... extremeties njs0,njs1 
    1039994         ii = jpisd + 1 - nimpp 
     
    10931048            END DO 
    10941049         END DO 
    1095 # if defined key_mpp 
    1096          CALL mppobc(vsbnd,jpisd,jpisf,jpjsob,jpk*3*3,1,jpi) 
    1097 # endif 
     1050         IF( lk_mpp )   CALL mppobc(vsbnd,jpisd,jpisf,jpjsob,jpk*3*3,1,jpi) 
     1051 
    10981052         ! ... extremeties njs0,njs1 
    10991053         ii = jpisd + 1 - nimpp 
     
    11351089            END DO 
    11361090         END DO 
    1137 # if defined key_mpp 
    1138          CALL mppobc(tsbnd,jpisd,jpisf,jpjsob,jpk*2*2,1,jpi) 
    1139          CALL mppobc(ssbnd,jpisd,jpisf,jpjsob,jpk*2*2,1,jpi) 
    1140 # endif  
     1091         IF( lk_mpp )   CALL mppobc(tsbnd,jpisd,jpisf,jpjsob,jpk*2*2,1,jpi) 
     1092         IF( lk_mpp )   CALL mppobc(ssbnd,jpisd,jpisf,jpjsob,jpk*2*2,1,jpi) 
     1093 
    11411094         ! ... extremeties  njs0,njs1 
    11421095         ii = jpisd + 1 - nimpp 
     
    12031156            END DO 
    12041157         END DO 
    1205 # if defined key_mpp 
    1206          CALL mppobc(u_cysbnd,jpisd,jpisf,jpjsob,jpk,1,jpi) 
    1207 # endif 
     1158         IF( lk_mpp )   CALL mppobc(u_cysbnd,jpisd,jpisf,jpjsob,jpk,1,jpi) 
     1159 
    12081160         ! ... extremeties  njs0,njs1 
    12091161         ii = jpisd + 1 - nimpp 
     
    12631215         END DO 
    12641216 
    1265       END IF 
     1217      ENDIF 
    12661218  
    12671219   END SUBROUTINE obc_rad_south 
     1220 
    12681221#else 
    12691222   !!================================================================================= 
     
    12741227   SUBROUTINE obc_rad( kt )            ! No open boundaries ==> empty routine 
    12751228      INTEGER, INTENT(in) :: kt 
    1276       WRITE(*,*) kt 
     1229      WRITE(*,*) 'obc_rad: You should not have seen this print! error?', kt 
    12771230   END SUBROUTINE obc_rad 
    12781231#endif 
  • trunk/NEMO/OPA_SRC/OBC/obcrst.F90

    r3 r32  
    2525 
    2626   !!--------------------------------------------------------------------------------- 
     27   !!   OPA 9.0 , LODYC-IPSL   (2003) 
     28   !!--------------------------------------------------------------------------------- 
    2729 
    2830CONTAINS 
     
    3032   SUBROUTINE obc_rst_wri ( kt ) 
    3133      !!-------------------------------------------------------------------------------- 
    32       !!                     SUBROUTINE obc_rst_wri 
    33       !!                    ************************ 
    34       !! ** Purpose : 
    35       !!      Write restart fields in numwob for open boundaries 
     34      !!                  ***  SUBROUTINE obc_rst_wri  *** 
     35      !!                 
     36      !! ** Purpose :   Write open boundary restart fields in restart.obc.output file  
    3637      !! 
    37       !! ** Method : 
    38       !!      numwob file: Direct access non formatted file. 
     38      !! ** Method  :   restart.obc.output file: Direct access non formatted file. 
    3939      !!      Each nstock time step , save fields which are necessary for restart. 
    4040      !!      - This routine is called if at least the key_obc is defined. It is called 
     
    5858      !!   8.5   ! 02-10 (C. Talandier, A-M. Treguier) F90 
    5959      !!         ! 03-06 (J.M. Molines) Bug fix for adjacent processors 
     60      !!   9.0   ! 04-02 (G. Madec)  suppression of numwob, use inum 
    6061      !!----------------------------------------------------------------------------------- 
    6162      !! * Arguments 
     
    6465      !! * Local declarations 
    6566      INTEGER ::   ji, jj, jk, ios 
     67      INTEGER ::   inum = 11          ! temporary logical unit 
    6668      INTEGER ::   ibloc, nreclo, jrec, jt, jb  
    6769      INTEGER ::   jfoe, jfow, ifon, ifos 
    6870      INTEGER ::   ino0, it0 
    6971      !!----------------------------------------------------------------------------- 
    70       !!   OPA 8.5, LODYC-IPSL (2002) 
    71       !!----------------------------------------------------------------------------- 
    72  
    73       ! 1. Output of restart fields (numwob) 
     72 
     73      ! 1. Output of restart fields (inum) 
    7474      ! ------------------------------------ 
    7575  
     
    8282              WRITE(numout,*) 'obcrst: OBC output for restart with obc_rst_wri routine' 
    8383              WRITE(numout,*) '~~~~~~' 
    84               WRITE(numout,*) '        output done in numwob = ', numwob,' at it= ',kt, &  
    85                               ' date= ',ndastp 
     84              WRITE(numout,*) '        output done in restart.obc.output file at it= ', kt, ' date= ', ndastp 
    8685         END IF 
    8786 
     
    9594         ! 1.1 Open file 
    9695         ! ------------- 
    97          OPEN( UNIT   =  numwob,              & 
     96         OPEN( UNIT   = inum,                 & 
    9897               IOSTAT = ios,                  & 
    9998               FILE   = 'restart.obc.output', & 
     
    110109         ! 1.2 Write header 
    111110         ! ---------------- 
    112          WRITE (numwob,REC=1) ino0,it0,nbobc,jpieob,jpiwob,jpjnob,jpjsob,     & 
     111         WRITE (inum,REC=1) ino0,it0,nbobc,jpieob,jpiwob,jpjnob,jpjsob,     & 
    113112                              jpjed,jpjef,jpjwd,jpjwf,jpind,jpinf,jpisd,jpisf 
    114113 
     
    128127                     jfoe = jpjed - njmpp + 1 
    129128                     PRINT *,'Narea =',narea,' write jrec =2 east' 
    130                      WRITE(numwob,REC=jrec)                                    & 
     129                     WRITE(inum,REC=jrec)                                    & 
    131130# if ! defined key_dynspg_fsc 
    132131                           ((  bebnd(jfoe,   jb,jt),          jb=1,3),jt=1,3), & 
     
    143142                        jfoe = jj  
    144143                        jrec = 2 + jj + njmpp -1 -jpjed 
    145                         WRITE (numwob,REC=jrec)                                   & 
     144                        WRITE (inum,REC=jrec)                                   & 
    146145# if ! defined key_dynspg_fsc 
    147146                              ((  bebnd(jfoe,   jb,jt),          jb=1,3),jt=1,3), & 
     
    173172                     jfow = jpjwd -njmpp + 1 
    174173                     PRINT *,'Narea =',narea,' write jrec =',jrec,' west' 
    175                      WRITE (numwob,REC=jrec)                                   & 
     174                     WRITE (inum,REC=jrec)                                   & 
    176175# if ! defined key_dynspg_fsc 
    177176                           ((  bwbnd(jfow,   jb,jt),          jb=1,3),jt=1,3), & 
     
    188187                        jfow = jj  
    189188                        jrec = 3 + jpjef -jpjed + jj + njmpp -1 -jpjwd 
    190                         WRITE (numwob,REC=jrec)                                   & 
     189                        WRITE (inum,REC=jrec)                                   & 
    191190# if ! defined key_dynspg_fsc 
    192191                              ((  bwbnd(jfow,   jb,jt),          jb=1,3),jt=1,3), & 
     
    217216            !        ifon = jpind 
    218217                     ifon = jpind -nimpp +1 
    219                      WRITE (numwob,REC=jrec)                                   & 
     218                     WRITE (inum,REC=jrec)                                   & 
    220219# if ! defined key_dynspg_fsc 
    221220                           ((  bnbnd(ifon,   jb,jt),          jb=1,3),jt=1,3), & 
     
    232231                        ifon = ji  
    233232                        jrec = 4 + jpjef -jpjed + jpjwf -jpjwd +ji + nimpp -1  -jpind 
    234                         WRITE (numwob,REC=jrec)                                   & 
     233                        WRITE (inum,REC=jrec)                                   & 
    235234# if ! defined key_dynspg_fsc 
    236235                              ((  bnbnd(ifon,   jb,jt),          jb=1,3),jt=1,3), & 
     
    262261            !        ifos = jpisd 
    263262                     ifos = jpisd -nimpp + 1 
    264                      WRITE (numwob,REC=jrec)                                   & 
     263                     WRITE (inum,REC=jrec)                                   & 
    265264# if ! defined key_dynspg_fsc 
    266265                           ((  bsbnd(ifos,   jb,jt),          jb=1,3),jt=1,3), & 
     
    278277                        jrec = 5 + jpjef -jpjed + jpjwf -jpjwd +jpinf -jpind + & 
    279278                              ji + nimpp -1 -jpisd 
    280                         WRITE (numwob,REC=jrec) & 
     279                        WRITE (inum,REC=jrec) & 
    281280# if ! defined key_dynspg_fsc 
    282281                              ((  bsbnd(ifos,   jb,jt),          jb=1,3),jt=1,3), & 
     
    292291         END IF 
    293292      END IF 
    294       CLOSE(numwob) 
     293      CLOSE(inum) 
    295294 
    296295   END SUBROUTINE obc_rst_wri 
     296 
    297297 
    298298   SUBROUTINE obc_rst_lec 
    299299      !!---------------------------------------------------------------------------- 
    300       !!                      SUBROUTINE obc_rst_lec 
    301       !!                     ************************ 
    302       !! ** Purpose : 
    303       !!      Read files for restart at open boundaries 
     300      !!                   ***  SUBROUTINE obc_rst_lec  *** 
     301      !!                    
     302      !! ** Purpose :   Read files for restart at open boundaries 
    304303      !! 
    305       !! ** Method : 
    306       !!      Read the previous boundary arrays on unit numrob 
     304      !! ** Method  :   Read the previous boundary arrays on unit inum 
    307305      !!      The first record indicates previous characterics 
    308306      !! 
     
    312310      !!---------------------------------------------------------------------------- 
    313311      !! * Local declarations 
     312      INTEGER ::   inum = 11            ! temporary logical unit 
    314313      INTEGER ::   ji,jj,jk,ios 
    315314      INTEGER ::   ino0,it0,nbobc0,jpieob0,jpiwob0,jpjnob0,jpjsob0 
     
    320319      INTEGER ::   jfoe, jfow, ifon, ifos 
    321320      !!----------------------------------------------------------------------------- 
    322       !!   OPA 8.5, LODYC-IPSL (2002) 
    323       !!----------------------------------------------------------------------------- 
    324321 
    325322      ! 0. Initialisations 
     
    358355      ! 0.1 Open files 
    359356      ! --------------- 
    360       OPEN( UNIT   =  numrob,       & 
     357      OPEN( UNIT   =  inum,       & 
    361358            IOSTAT =  ios,          & 
    362359            FILE   = 'restart.obc', & 
     
    374371      ! 1.1 First record 
    375372      ! ----------------- 
    376       READ(numrob,REC=1) ino1,it1,nbobc1,jpieob1,jpiwob1,jpjnob1,     & 
     373      READ(inum,REC=1) ino1,it1,nbobc1,jpieob1,jpiwob1,jpjnob1,     & 
    377374                         jpjsob1,ied1,ief1,iwd1,iwf1,ind1,inf1,isd1,isf1 
    378375  
    379376      IF(lwp) THEN 
    380377         WRITE(numout,*) ' ' 
    381          WRITE(numout,*) '        READ numrob with number job : ',ino1,' with the time it: ',it1 
     378         WRITE(numout,*) '        READ inum with number job : ',ino1,' with the time it: ',it1 
    382379         WRITE(numout,*) ' ' 
    383380      END IF 
     
    520517      !        jfoe = jpjed 
    521518               jfoe = jpjed -njmpp + 1 
    522                READ (numrob,REC=jrec)                                   & 
     519               READ (inum,REC=jrec)                                   & 
    523520# if ! defined key_dynspg_fsc 
    524521                    ((  bebnd(jfoe,   jb,jt),          jb=1,3),jt=1,3), & 
     
    535532                  jfoe = jj  
    536533                  jrec = 2 + jj + njmpp -1 -jpjed 
    537                   READ (numrob,REC=jrec)                                   & 
     534                  READ (inum,REC=jrec)                                   & 
    538535# if ! defined key_dynspg_fsc 
    539536                       ((  bebnd(jfoe,   jb,jt),          jb=1,3),jt=1,3), & 
     
    562559      !        jfow = jpjwd 
    563560               jfow = jpjwd -njmpp + 1 
    564                READ (numrob,REC=jrec)                                   & 
     561               READ (inum,REC=jrec)                                   & 
    565562# if ! defined key_dynspg_fsc 
    566563                    ((  bwbnd(jfow,   jb,jt),          jb=1,3),jt=1,3), & 
     
    577574                  jfow = jj  
    578575                  jrec = 3 + jpjef -jpjed + jj + njmpp -1 -jpjwd 
    579                   READ (numrob,REC=jrec)                                   & 
     576                  READ (inum,REC=jrec)                                   & 
    580577# if ! defined key_dynspg_fsc 
    581578                       ((  bwbnd(jfow,   jb,jt),          jb=1,3),jt=1,3), & 
     
    604601      !        ifon = jpind 
    605602               ifon = jpind -nimpp +1 
    606                READ (numrob,REC=jrec)                                   & 
     603               READ (inum,REC=jrec)                                   & 
    607604# if ! defined key_dynspg_fsc 
    608605                    ((  bnbnd(ifon,   jb,jt),          jb=1,3),jt=1,3), & 
     
    619616                  ifon = ji  
    620617                  jrec = 4 + jpjef -jpjed + jpjwf -jpjwd +ji + nimpp -1  -jpind 
    621                   READ (numrob,REC=jrec)                                   &  
     618                  READ (inum,REC=jrec)                                   &  
    622619# if ! defined key_dynspg_fsc 
    623620                       ((  bnbnd(ifon,   jb,jt),          jb=1,3),jt=1,3), & 
     
    646643      !        ifos = jpisd 
    647644               ifos = jpisd -nimpp + 1 
    648                READ (numrob,REC=jrec)                                   & 
     645               READ (inum,REC=jrec)                                   & 
    649646# if ! defined key_dynspg_fsc 
    650647                    ((  bsbnd(ifos,   jb,jt),          jb=1,3),jt=1,3), & 
     
    662659                  jrec = 5 + jpjef -jpjed + jpjwf -jpjwd +jpinf -jpind +  & 
    663660                        ji + nimpp -1 -jpisd 
    664                   READ (numrob,REC=jrec)                                   &  
     661                  READ (inum,REC=jrec)                                   &  
    665662# if ! defined key_dynspg_fsc 
    666663                       ((  bsbnd(ifos,   jb,jt),          jb=1,3),jt=1,3), & 
     
    677674 
    678675      END IF 
    679       CLOSE(numrob) 
    680  
    681 # if defined key_mpp 
    682       IF( lpeastobc ) THEN 
    683          CALL mppobc(bebnd,jpjed,jpjef,jpieob,3*3,2,jpj) 
    684          CALL mppobc(uebnd,jpjed,jpjef,jpieob,jpk*3*3,2,jpj) 
    685          CALL mppobc(vebnd,jpjed,jpjef,jpieob+1,jpk*3*3,2,jpj) 
    686          CALL mppobc(tebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 
    687          CALL mppobc(sebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 
    688       END IF 
    689       IF( lpwestobc ) THEN 
    690          CALL mppobc(bwbnd,jpjwd,jpjwf,jpiwob,3*3,2,jpj) 
    691          CALL mppobc(uwbnd,jpjwd,jpjwf,jpiwob,jpk*3*3,2,jpj) 
    692          CALL mppobc(vwbnd,jpjwd,jpjwf,jpiwob,jpk*3*3,2,jpj) 
    693          CALL mppobc(twbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 
    694          CALL mppobc(swbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 
    695       END IF 
    696       IF( lpnorthobc ) THEN  
    697          CALL mppobc(bnbnd,jpind,jpinf,jpjnob  ,3*3    ,1,jpi) 
    698          CALL mppobc(unbnd,jpind,jpinf,jpjnob+1,jpk*3*3,1,jpi) 
    699          CALL mppobc(vnbnd,jpind,jpinf,jpjnob  ,jpk*3*3,1,jpi) 
    700          CALL mppobc(tnbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 
    701          CALL mppobc(snbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 
    702       END IF 
    703       IF( lpsouthobc ) THEN 
    704          CALL mppobc(bsbnd,jpisd,jpisf,jpjsob,    3*3,1,jpi) 
    705          CALL mppobc(usbnd,jpisd,jpisf,jpjsob,jpk*3*3,1,jpi) 
    706          CALL mppobc(vsbnd,jpisd,jpisf,jpjsob,jpk*3*3,1,jpi) 
    707          CALL mppobc(tsbnd,jpisd,jpisf,jpjsob,jpk*2*2,1,jpi) 
    708          CALL mppobc(ssbnd,jpisd,jpisf,jpjsob,jpk*2*2,1,jpi) 
    709       END IF 
    710 # endif 
     676      CLOSE(inum) 
     677 
     678      IF( lk_mpp ) THEN 
     679         IF( lpeastobc ) THEN 
     680# if ! defined key_dynspg_fsc 
     681            CALL mppobc(bebnd,jpjed,jpjef,jpieob,3*3,2,jpj) 
     682# endif 
     683            CALL mppobc(uebnd,jpjed,jpjef,jpieob,jpk*3*3,2,jpj) 
     684            CALL mppobc(vebnd,jpjed,jpjef,jpieob+1,jpk*3*3,2,jpj) 
     685            CALL mppobc(tebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 
     686            CALL mppobc(sebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 
     687         ENDIF 
     688         IF( lpwestobc ) THEN 
     689# if ! defined key_dynspg_fsc 
     690            CALL mppobc(bwbnd,jpjwd,jpjwf,jpiwob,3*3,2,jpj) 
     691# endif 
     692            CALL mppobc(uwbnd,jpjwd,jpjwf,jpiwob,jpk*3*3,2,jpj) 
     693            CALL mppobc(vwbnd,jpjwd,jpjwf,jpiwob,jpk*3*3,2,jpj) 
     694            CALL mppobc(twbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 
     695            CALL mppobc(swbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 
     696         ENDIF 
     697         IF( lpnorthobc ) THEN  
     698# if ! defined key_dynspg_fsc 
     699            CALL mppobc(bnbnd,jpind,jpinf,jpjnob  ,3*3    ,1,jpi) 
     700# endif 
     701            CALL mppobc(unbnd,jpind,jpinf,jpjnob+1,jpk*3*3,1,jpi) 
     702            CALL mppobc(vnbnd,jpind,jpinf,jpjnob  ,jpk*3*3,1,jpi) 
     703            CALL mppobc(tnbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 
     704            CALL mppobc(snbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 
     705         ENDIF 
     706         IF( lpsouthobc ) THEN 
     707# if ! defined key_dynspg_fsc 
     708            CALL mppobc(bsbnd,jpisd,jpisf,jpjsob,    3*3,1,jpi) 
     709# endif 
     710            CALL mppobc(usbnd,jpisd,jpisf,jpjsob,jpk*3*3,1,jpi) 
     711            CALL mppobc(vsbnd,jpisd,jpisf,jpjsob,jpk*3*3,1,jpi) 
     712            CALL mppobc(tsbnd,jpisd,jpisf,jpjsob,jpk*2*2,1,jpi) 
     713            CALL mppobc(ssbnd,jpisd,jpisf,jpjsob,jpk*2*2,1,jpi) 
     714         ENDIF 
     715      ENDIF 
    711716  
    712717   END SUBROUTINE obc_rst_lec 
     
    719724   SUBROUTINE obc_rst_wri( kt )           !  No Open boundary ==> empty routine 
    720725      INTEGER,INTENT(in) :: kt 
    721       WRITE(*,*) kt 
     726      WRITE(*,*) 'obc_rst_wri: You should not have seen this print! error?', kt 
    722727   END SUBROUTINE obc_rst_wri 
    723728   SUBROUTINE obc_rst_lec                 !  No Open boundary ==> empty routine 
  • trunk/NEMO/OPA_SRC/OBC/obcspg.F90

    r3 r32  
    55   !!                      open boundary 
    66   !!====================================================================== 
    7 #if defined key_obc && defined key_dynspg_rl 
     7#if   defined key_obc   &&  defined key_dynspg_rl 
    88   !!---------------------------------------------------------------------- 
    99   !!   'key_obc'    and                            Open Boundary Condition 
     
    8686      !!---------------------------------------------------------------------- 
    8787 
    88       ! 0. Local constant initialization 
    89       ! -------------------------------- 
    90  
    91       IF( kt == nit000 .OR. ln_rstart ) THEN 
     88      IF( kt == nit000 .OR. ln_rstart ) THEN      ! Initialization 
    9289         ! ... Boundary restoring coefficient 
    9390         rtaue = 2. * rdt / rdpeob 
     
    10097         rtaunin = 2. * rdt / rdpnin 
    10198         rtausin = 2. * rdt / rdpsin  
    102       END IF 
    103  
    104       ! ... right hand side of the barotropic elliptic equation 
     99      ENDIF 
     100 
     101      ! right hand side of the barotropic elliptic equation 
     102      ! --------------------------------------------------- 
     103 
     104      ! Isolated coastline contribution to the RHS of the barotropic Eq. 
    105105      gcbob(:,:) = 0.e0 
    106  
    107       ! 1. Isolated coastline contribution to the RHS of the barotropic Eq. 
    108       ! ------------------------------------------------------------------- 
    109106      DO jnic = 1, nbobc-1 
    110          DO jj = 1, jpj 
    111             DO ji = 1, jpi 
    112                gcbob(ji,jj) = gcbob(ji,jj) + gcfobc(ji,jj,jnic) * gcbic(jnic) 
    113             END DO 
    114          END DO 
     107         gcbob(:,:) = gcbob(:,:) + gcfobc(:,:,jnic) * gcbic(jnic) 
    115108      END DO 
    116109 
    117       ! 2. East open boundary 
    118       ! --------------------- 
    119  
    120       IF( lpeastobc ) THEN 
    121          CALL obc_spg_east( kt ) 
    122       END IF 
    123  
    124       ! 3. West open boundary 
    125       ! --------------------- 
    126  
    127       IF( lpwestobc ) THEN 
    128          CALL obc_spg_west( kt ) 
    129       END IF 
    130          
    131       ! 4. North open boundary 
    132       ! ---------------------- 
    133  
    134       IF( lpnorthobc ) THEN 
    135          CALL obc_spg_north( kt ) 
    136       END IF 
    137   
    138       ! 5. South open boundary 
    139       ! ---------------------- 
    140  
    141       IF( lpsouthobc ) THEN 
    142          CALL obc_spg_south( kt ) 
    143       END IF 
    144   
    145 # if defined key_mpp 
    146       CALL mpp_lnk_2d( gcbob, 'G', 1. ) 
    147 # endif 
     110      IF( lpeastobc  )   CALL obc_spg_east ( kt )    ! East open boundary 
     111 
     112      IF( lpwestobc  )   CALL obc_spg_west ( kt )    ! West open boundary 
     113 
     114      IF( lpnorthobc )   CALL obc_spg_north( kt )    ! North open boundary 
     115 
     116      IF( lpsouthobc )   CALL obc_spg_south( kt )    ! South open boundary 
     117 
     118      IF( lk_mpp )   CALL lbc_lnk( gcbob, 'G', 1. ) 
    148119  
    149120   END SUBROUTINE obc_spg 
    150121 
     122 
    151123   SUBROUTINE obc_spg_east ( kt ) 
    152124      !!------------------------------------------------------------------------------ 
    153       !!                     SUBROUTINE obc_spg_east 
    154       !!                    ************************* 
    155       !! ** Purpose : 
    156       !!      Apply the radiation algorithm on east OBC stream function. 
    157       !!      If the logical lfbceast is .TRUE., there is no radiation but only fixed OBC 
     125      !!                ***  SUBROUTINE obc_spg_east  *** 
     126      !!                  
     127      !! ** Purpose :   Apply the radiation algorithm on east OBC stream function. 
     128      !!      If lfbceast=T , there is no radiation but only fixed OBC 
    158129      !! 
    159130      !!  History : 
     
    169140      !! * Local declarations 
    170141      INTEGER ::   ij 
    171  
    172142      REAL(wp) ::   z2dtr, ztau, zin 
    173143      REAL(wp) ::   z05cx, zdt, z4nor2, z2dx, z2dy 
    174  
    175       !!------------------------------------------------------------------------------ 
    176       !!  OPA 8.5, LODYC-IPSL (2002) 
    177144      !!------------------------------------------------------------------------------ 
    178145 
     
    229196                  IF(lwp) WRITE(numout,*)' PB dans obc_spg_east au pt ',jj,' : z4nor=0' 
    230197                  z4nor2 = 0.001 
    231                END IF 
     198               ENDIF 
    232199               z05cx = zdt * z2dx / z4nor2 * bmask(ji,jj) 
    233200               z05cx = z05cx / e1v(ji+1,jj) 
     
    249216         END DO 
    250217 
    251       END IF 
    252 # if defined key_mpp 
    253       CALL mppobc(bsfeob,jpjed,jpjef,jpieob-1,1,2,jpj) 
    254 # endif 
     218      ENDIF 
     219      IF( lk_mpp )   CALL mppobc(bsfeob,jpjed,jpjef,jpieob-1,1,2,jpj) 
     220 
    255221 
    256222      ! 3. right hand side of the barotropic elliptic equation 
     
    258224  
    259225      IF( ( neuler == 0 ) .AND. ( kt == nit000 ) ) THEN 
    260          z2dtr=1./rdt 
     226         z2dtr = 1.0 / rdt 
    261227      ELSE 
    262          z2dtr=1./2./rdt 
    263       END IF 
     228         z2dtr = 0.5 / rdt 
     229      ENDIF 
    264230      DO ji = fs_nie0-1, fs_nie1-1 ! Vector opt. 
    265231         DO jj = nje0m1, nje1  
     
    351317                  IF(lwp) WRITE(numout,*)' PB dans obc_spg_west au pt ',jj,' : z4nor =0' 
    352318                  z4nor2=0.0001 
    353                END IF 
     319               ENDIF 
    354320               z05cx = zdt * z2dx / z4nor2 * bmask(ji,jj) 
    355321               z05cx = z05cx / e1v(ji,jj) 
     
    368334         END DO 
    369335 
    370       END IF 
    371 # if defined key_mpp  
    372       CALL mppobc(bsfwob,jpjwd,jpjwf,jpiwob+1,1,2,jpj)  
    373 # endif  
     336      ENDIF 
     337      IF( lk_mpp )   CALL mppobc(bsfwob,jpjwd,jpjwf,jpiwob+1,1,2,jpj)  
     338 
    374339 
    375340      ! 3. right hand side of the barotropic elliptic equation 
     
    377342 
    378343      IF( ( neuler == 0 ) .AND. ( kt == nit000 ) ) THEN 
    379          z2dtr=1./rdt 
     344         z2dtr = 1.0 / rdt 
    380345      ELSE 
    381          z2dtr=1./2./rdt 
    382       END IF 
     346         z2dtr = 0.5 / rdt 
     347      ENDIF 
    383348      DO ji = fs_niw0+1, fs_niw1+1 ! Vector opt. 
    384349         DO jj = njw0m1, njw1 
     
    392357   SUBROUTINE obc_spg_north ( kt ) 
    393358      !!------------------------------------------------------------------------------ 
    394       !!                     SUBROUTINE obc_spg_north 
    395       !!                    ************************* 
    396       !! ** Purpose : 
    397       !!      Apply the radiation algorithm on north OBC stream function. 
    398       !!      If the logical lfbcnorth is .TRUE., there is no radiation but only fixed OBC 
     359      !!                 ***  SUBROUTINE obc_spg_north  *** 
     360      !!  
     361      !! ** Purpose :   Apply the radiation algorithm on north OBC stream function. 
     362      !!      If lfbcnorth=T, there is no radiation but only fixed OBC 
    399363      !! 
    400364      !!  History : 
     
    410374      !! * Local declarations 
    411375      INTEGER ::   ii 
    412  
    413376      REAL(wp) ::   z2dtr, ztau, zin 
    414377      REAL(wp) ::   z05cx, zdt, z4nor2, z2dx, z2dy 
    415  
    416       !!------------------------------------------------------------------------------ 
    417       !!  OPA 8.5, LODYC-IPSL (2002) 
    418378      !!------------------------------------------------------------------------------ 
    419379 
     
    475435               IF( z4nor2 == 0 ) THEN 
    476436                  IF(lwp) WRITE(numout,*)' PB dans obc_spg_north au pt',ji,' : z4nor =0' 
    477                END IF 
     437               ENDIF 
    478438               z05cx = zdt * z2dx / z4nor2 * bmask(ji,jj) 
    479439               z05cx = z05cx / e2u(ji,jj+1) 
     
    492452         END DO 
    493453 
    494       END IF 
    495 # if defined key_mpp 
    496       call mppobc(bsfnob,jpind,jpinf,jpjnob-1,1,1,jpi) 
    497 # endif 
     454      ENDIF 
     455      IF( lk_mpp )   CALL mppobc(bsfnob,jpind,jpinf,jpjnob-1,1,1,jpi) 
     456 
    498457 
    499458      ! 3. right hand side of the barotropic elliptic equation 
     
    501460 
    502461      IF( ( neuler == 0 ) .AND. ( kt == nit000 ) ) THEN 
    503          z2dtr=1./rdt 
     462         z2dtr = 1.0 / rdt 
    504463      ELSE 
    505          z2dtr=1./2./rdt 
    506       END IF 
     464         z2dtr = 0.5 / rdt 
     465      ENDIF 
    507466      DO jj = fs_njn0-1, fs_njn1-1 ! Vector opt. 
    508467         DO ji = nin0m1, nin1 
     
    514473   END SUBROUTINE obc_spg_north 
    515474 
     475 
    516476   SUBROUTINE obc_spg_south ( kt ) 
    517477      !!------------------------------------------------------------------------------ 
    518       !!                     SUBROUTINE obc_spg_south 
    519       !!                    ************************* 
    520       !! ** Purpose : 
    521       !!      Apply the radiation algorithm on south OBC stream function. 
    522       !!      If the logical lfbcsouth is .TRUE., there is no radiation but only fixed OBC 
     478      !!                  ***  SUBROUTINE obc_spg_south  *** 
     479      !!                 
     480      !! ** Purpose :   Apply the radiation algorithm on south OBC stream function. 
     481      !!      If lfbcsouth=T, there is no radiation but only fixed OBC 
    523482      !! 
    524483      !!  History : 
     
    596555               IF( z4nor2 == 0 ) THEN 
    597556                  IF(lwp) WRITE(numout,*)' PB dans obc_spg_south au pt ',ji,' : z4nor =0' 
    598                END IF 
     557               ENDIF 
    599558               z05cx = zdt * z2dx / z4nor2 * bmask(ji,jj) 
    600559               z05cx = z05cx / e2u(ji,jj) 
     
    613572         END DO 
    614573 
    615       END IF 
    616 # if defined key_mpp 
    617       CALL mppobc(bsfsob,jpisd,jpisf,jpjsob+1,1,1,jpi) 
    618 # endif 
     574      ENDIF 
     575      IF( lk_mpp )   CALL mppobc(bsfsob,jpisd,jpisf,jpjsob+1,1,1,jpi) 
     576 
    619577  
    620578      ! 3. right hand side of the barotropic elliptic equation 
    621579      ! ------------------------------------------------------- 
    622580 
    623       IF( ( neuler == 0 ) .and. ( kt == nit000 ) ) THEN 
    624          z2dtr=1./rdt 
     581      IF( ( neuler == 0 ) .AND. ( kt == nit000 ) ) THEN 
     582         z2dtr = 1.0 / rdt 
    625583      ELSE 
    626          z2dtr=1./2./rdt 
    627       END IF 
     584         z2dtr = 0.5 / rdt 
     585      ENDIF 
    628586      DO jj = fs_njs0+1, fs_njs1+1 ! Vector opt. 
    629587         DO ji = nis0m1, nis1  
     
    642600   SUBROUTINE obc_spg( kt )        ! Empty routine 
    643601      INTEGER, INTENT( in ) :: kt 
    644       WRITE(*,*) kt 
     602      WRITE(*,*) 'obc_spg: You should not have seen this print! error?', kt 
    645603   END SUBROUTINE obc_spg 
    646604#endif 
  • trunk/NEMO/OPA_SRC/OBC/obctra.F90

    r3 r32  
    2020   USE obc_oce         ! ocean open boundary conditions 
    2121   USE lib_mpp         ! ??? 
     22   USE lbclnk          ! ??? 
    2223   USE in_out_manager  ! I/O manager 
    2324 
     
    2930 
    3031   !! * Module variables 
    31    INTEGER ::   ji, jj, jk      ! dummy loop indices 
    32  
    3332   INTEGER ::      & ! ... boundary space indices  
    3433      nib   = 1,   & ! nib   = boundary point 
     
    9089      END IF 
    9190 
    92       ! 1. East open boundary 
    93       ! --------------------- 
    94  
    95       IF( lpeastobc )THEN 
    96          CALL obc_tra_east( kt ) 
    97       END IF 
    98  
    99       ! 2. West open boundary 
    100       ! --------------------- 
    101  
    102       IF( lpwestobc )THEN 
    103          CALL obc_tra_west( kt ) 
    104       END IF 
    105  
    106       ! 3. North open boundary 
    107       ! --------------------- 
    108  
    109       IF( lpnorthobc )THEN 
    110          CALL obc_tra_north( kt ) 
    111       END IF 
    112  
    113       ! 4. South open boundary 
    114       ! --------------------- 
    115  
    116       IF( lpsouthobc )THEN 
    117          CALL obc_tra_south( kt ) 
    118       END IF 
    119  
    120 # if defined key_mpp 
    121       !! bug ??? 
    122       IF( kt >= nit000+3 .AND. ln_rstart ) THEN 
    123          CALL mpp_lnk_3d( tb, 'T', 1. ) 
    124          CALL mpp_lnk_3d( sb, 'T', 1. ) 
    125       END IF 
    126       CALL mpp_lnk_3d( ta, 'T', 1. ) 
    127       CALL mpp_lnk_3d( sa, 'T', 1. ) 
    128 # endif 
     91      IF( lpeastobc  )   CALL obc_tra_east ( kt )    ! East open boundary 
     92 
     93      IF( lpwestobc  )   CALL obc_tra_west ( kt )    ! West open boundary 
     94 
     95      IF( lpnorthobc )   CALL obc_tra_north( kt )    ! North open boundary 
     96 
     97      IF( lpsouthobc )   CALL obc_tra_south( kt )    ! South open boundary 
     98 
     99      IF( lk_mpp ) THEN                  !!bug ??? 
     100         IF( kt >= nit000+3 .AND. ln_rstart ) THEN 
     101            CALL lbc_lnk( tb, 'T', 1. ) 
     102            CALL lbc_lnk( sb, 'T', 1. ) 
     103         END IF 
     104         CALL lbc_lnk( ta, 'T', 1. ) 
     105         CALL lbc_lnk( sa, 'T', 1. ) 
     106      ENDIF 
    129107 
    130108   END SUBROUTINE obc_tra 
     
    151129 
    152130      !! * Local declaration 
     131      INTEGER ::   ji, jj, jk      ! dummy loop indices 
    153132      REAL(wp) ::   z05cx, ztau, zin 
    154  
    155       !!------------------------------------------------------------------------------ 
    156       !!  OPA 8.5, LODYC-IPSL (2002) 
    157133      !!------------------------------------------------------------------------------ 
    158134 
     
    253229 
    254230      !! * Local declaration 
     231      INTEGER ::   ji, jj, jk      ! dummy loop indices 
    255232      REAL(wp) ::   z05cx, ztau, zin 
    256233      !!------------------------------------------------------------------------------ 
     
    351328 
    352329      !! * Local declaration 
     330      INTEGER ::   ji, jj, jk      ! dummy loop indices 
    353331      REAL(wp) ::   z05cx, ztau, zin 
    354332      !!------------------------------------------------------------------------------ 
     
    452430 
    453431      !! * Local declaration 
     432      INTEGER ::   ji, jj, jk      ! dummy loop indices 
    454433      REAL(wp) ::   z05cx, ztau, zin 
    455434      !!------------------------------------------------------------------------------ 
  • trunk/NEMO/OPA_SRC/OBC/obcvol.F90

    r3 r32  
    22   !!================================================================================= 
    33   !!                       ***  MODULE  obcvol  *** 
    4    !! Ocean dynamic :  Volume constraint when OBC and Free surface are activated 
     4   !! Ocean dynamic :  Volume constraint when OBC and Free surface are used 
    55   !!================================================================================= 
    6 #if defined key_obc && defined key_dynspg_fsc 
     6#if   defined key_obc   &&  defined key_dynspg_fsc 
    77   !!--------------------------------------------------------------------------------- 
    88   !!   'key_obc'               and                           open boundary conditions 
     
    7373      !! 
    7474      !! History : 
    75       !!   8.5  !  02-10 (C. Talandier, A-M. Treguier) Original 
     75      !!   8.5  !  02-10 (C. Talandier, A-M. Treguier) Original code 
    7676      !!---------------------------------------------------------------------------- 
    7777      !! * Arguments 
     
    102102         END DO 
    103103      END DO 
    104  
    105 # if defined key_mpp 
    106       CALL mpp_sum( zCflxemp ) 
    107 # endif 
     104      IF( lk_mpp )   CALL mpp_sum( zCflxemp )   ! sum over the global domain 
    108105 
    109106      ! 2. Barotropic velocity for each open boundary 
     
    113110 
    114111      ! ... West open boundary 
    115       IF( lpwestobc ) THEN 
    116  
    117          ! ... Total transport through the West OBC 
     112      IF( lpwestobc ) THEN                      ! ... Total transport through the West OBC 
    118113         DO ji = fs_niw0, fs_niw1 ! Vector opt. 
    119114            DO jk = 1, jpkm1 
    120115               DO jj = 1, jpj 
    121                   zubtpecor = zubtpecor + ua(ji,jj,jk)*e2u(ji,jj)*fse3u(ji,jj,jk) & 
    122                                         * uwmsk(jj,jk) 
    123                END DO 
    124             END DO 
    125          END DO 
    126  
     116                  zubtpecor = zubtpecor + ua(ji,jj,jk)*e2u(ji,jj)*fse3u(ji,jj,jk) * uwmsk(jj,jk) 
     117               END DO 
     118            END DO 
     119         END DO 
    127120      END IF  
    128121 
    129122      ! ... East open boundary 
    130       IF( lpeastobc ) THEN 
    131  
    132          ! ... Total transport through the East OBC 
     123      IF( lpeastobc ) THEN                      ! ... Total transport through the East OBC 
    133124         DO ji = fs_nie0, fs_nie1 ! Vector opt. 
    134125            DO jk = 1, jpkm1 
    135126               DO jj = 1, jpj 
    136                   zubtpecor = zubtpecor - ua(ji,jj,jk)*e2u(ji,jj)*fse3u(ji,jj,jk) & 
    137                                         * uemsk(jj,jk) 
    138                END DO 
    139             END DO 
    140          END DO 
    141  
     127                  zubtpecor = zubtpecor - ua(ji,jj,jk)*e2u(ji,jj)*fse3u(ji,jj,jk) * uemsk(jj,jk) 
     128               END DO 
     129            END DO 
     130         END DO 
    142131      END IF  
    143132 
    144133      ! ... North open boundary 
    145       IF( lpnorthobc ) THEN 
    146  
    147          ! ... Total transport through the North OBC 
     134      IF( lpnorthobc ) THEN                     ! ... Total transport through the North OBC 
    148135         DO jj = fs_njn0, fs_njn1 ! Vector opt. 
    149136            DO jk = 1, jpkm1 
    150137               DO ji = 1, jpi 
    151                   zubtpecor = zubtpecor - va(ji,jj,jk)*e1v(ji,jj)*fse3v(ji,jj,jk) & 
    152                                         * vnmsk(ji,jk) 
    153                END DO 
    154             END DO 
    155          END DO 
    156  
     138                  zubtpecor = zubtpecor - va(ji,jj,jk)*e1v(ji,jj)*fse3v(ji,jj,jk) * vnmsk(ji,jk) 
     139               END DO 
     140            END DO 
     141         END DO 
    157142      END IF  
    158143 
    159144      ! ... South open boundary 
    160       IF( lpsouthobc ) THEN 
    161  
    162          ! ... Total transport through the South OBC 
     145      IF( lpsouthobc ) THEN                     ! ... Total transport through the South OBC 
    163146         DO jj = fs_njs0, fs_njs1 ! Vector opt. 
    164147            DO jk = 1, jpkm1 
    165148               DO ji = 1, jpi 
    166                   zubtpecor = zubtpecor + va(ji,jj,jk)*e1v(ji,jj)*fse3v(ji,jj,jk) & 
    167                                         * vsmsk(ji,jk) 
    168                END DO 
    169             END DO 
    170          END DO 
    171  
    172       END IF  
    173  
    174 # if defined key_mpp 
    175       CALL mpp_sum( zubtpecor ) 
    176 # endif 
     149                  zubtpecor = zubtpecor + va(ji,jj,jk)*e1v(ji,jj)*fse3v(ji,jj,jk) * vsmsk(ji,jk) 
     150               END DO 
     151            END DO 
     152         END DO 
     153      END IF  
     154 
     155      IF( lk_mpp )   CALL mpp_sum( zubtpecor )   ! sum over the global domain 
     156 
    177157 
    178158      ! 3. The normal velocity correction 
     
    181161      zubtpecor = (zubtpecor - zCflxemp*volemp)*(1./obcsurftot) 
    182162 
    183       IF( lwp .and. mod( kt, nwrite ) == 0) THEN 
     163      IF( lwp .AND. MOD( kt, nwrite ) == 0) THEN 
    184164         IF(lwp) WRITE(numout,*)'        ' 
    185165         IF(lwp) WRITE(numout,*)'obc_vol : time step :', kt 
     
    214194         END DO 
    215195 
    216 # if defined key_mpp 
    217          CALL mpp_sum( ztransw ) 
    218 # endif 
    219  
    220          IF( lwp .and. mod( kt, nwrite ) == 0) THEN 
     196         IF( lk_mpp )   CALL mpp_sum( ztransw )   ! sum over the global domain 
     197 
     198         IF( lwp .AND. MOD( kt, nwrite ) == 0) THEN 
    221199            IF(lwp) WRITE(numout,*)'          West OB transport ztransw :', ztransw,'(m3/s)' 
    222200         END IF  
     
    236214         END DO 
    237215 
    238 # if defined key_mpp 
    239          CALL mpp_sum( ztranse ) 
    240 # endif 
    241  
    242          IF( lwp .and. mod( kt, nwrite ) == 0) THEN 
     216         IF( lk_mpp )   CALL mpp_sum( ztranse )   ! sum over the global domain 
     217 
     218         IF( lwp .AND. MOD( kt, nwrite ) == 0) THEN 
    243219            IF(lwp) WRITE(numout,*)'          East OB transport ztranse :', ztranse,'(m3/s)' 
    244220         END IF  
     
    257233            END DO 
    258234         END DO 
    259  
    260 # if defined key_mpp 
    261          CALL mpp_sum( ztransn ) 
    262 # endif 
    263  
    264          IF( lwp .and. mod( kt, nwrite ) == 0) THEN 
     235         IF( lk_mpp )   CALL mpp_sum( ztransn )   ! sum over the global domain 
     236 
     237         IF( lwp .AND. MOD( kt, nwrite ) == 0) THEN 
    265238            IF(lwp) WRITE(numout,*)'          North OB transport ztransn :', ztransn,'(m3/s)' 
    266239         END IF  
     
    279252            END DO 
    280253         END DO 
    281   
    282 # if defined key_mpp 
    283          CALL mpp_sum( ztranss ) 
    284 # endif 
    285  
    286          IF( lwp .and. mod( kt, nwrite ) == 0) THEN 
     254         IF( lk_mpp )   CALL mpp_sum( ztranss )   ! sum over the global domain 
     255 
     256         IF( lwp .AND. MOD( kt, nwrite ) == 0) THEN 
    287257            IF(lwp) WRITE(numout,*)'          South OB transport ztranss :', ztranss,'(m3/s)' 
    288258         END IF  
     
    296266      ztranst = ztransw - ztranse + ztranss - ztransn 
    297267 
    298       IF( lwp .and. mod( kt, nwrite ) == 0) THEN 
     268      IF( lwp .AND. MOD( kt, nwrite ) == 0) THEN 
    299269         IF(lwp) WRITE(numout,*)'        ' 
    300270         IF(lwp) WRITE(numout,*)'          Cumulate transport ztranst =', ztranst,'(m3/s)' 
Note: See TracChangeset for help on using the changeset viewer.