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 4254 for branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90 – NEMO

Ignore:
Timestamp:
2013-11-19T15:37:49+01:00 (11 years ago)
Author:
acc
Message:

Branch 2013/dev_r3858_NOC_ZTC, #863. Merge in final changes from the dev_r3867_MERCATOR1_DYN branch; mainly AGRIF and BDY compatibility

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r4105 r4254  
    8181      INTEGER,          DIMENSION(jpbgrd) ::   ilen1  
    8282      INTEGER, POINTER, DIMENSION(:)      ::   nblen, nblenrim  ! short cuts 
     83      TYPE(OBC_DATA), POINTER             ::   dta              ! short cut 
    8384      !! 
    8485      !!--------------------------------------------------------------------------- 
     
    9293         ! Calculate depth-mean currents 
    9394         !----------------------------- 
    94          CALL wrk_alloc(jpi,jpj,pu2d,pv2d)  
    95  
    96          pu2d(:,:) = 0._wp 
    97          pv2d(:,:) = 0._wp 
    98  
     95         CALL wrk_alloc(jpi,jpj,pun2d,pvn2d)  
     96 
     97         pun2d(:,:) = 0.e0 
     98         pvn2d(:,:) = 0.e0 
    9999         DO ik = 1, jpkm1   !! Vertically integrated momentum trends 
    100              pu2d(:,:) = pu2d(:,:) + fse3u(:,:,ik) * umask(:,:,ik) * un(:,:,ik) 
    101              pv2d(:,:) = pv2d(:,:) + fse3v(:,:,ik) * vmask(:,:,ik) * vn(:,:,ik) 
     100             pun2d(:,:) = pun2d(:,:) + fse3u(:,:,ik) * umask(:,:,ik) * un(:,:,ik) 
     101             pvn2d(:,:) = pvn2d(:,:) + fse3v(:,:,ik) * vmask(:,:,ik) * vn(:,:,ik) 
    102102         END DO 
    103          pu2d(:,:) = pu2d(:,:) * hur(:,:) 
    104          pv2d(:,:) = pv2d(:,:) * hvr(:,:) 
     103         pun2d(:,:) = pun2d(:,:) * hur(:,:) 
     104         pvn2d(:,:) = pvn2d(:,:) * hvr(:,:) 
    105105          
    106106         DO ib_bdy = 1, nb_bdy 
     
    108108            nblen => idx_bdy(ib_bdy)%nblen 
    109109            nblenrim => idx_bdy(ib_bdy)%nblenrim 
    110  
    111             IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 0 ) THEN  
     110            dta => dta_bdy(ib_bdy) 
     111 
     112            IF( nn_dyn2d_dta(ib_bdy) .eq. 0 ) THEN  
    112113               ilen1(:) = nblen(:) 
    113                igrd = 1 
    114                DO ib = 1, ilen1(igrd) 
    115                   ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    116                   ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    117                   dta_bdy(ib_bdy)%ssh(ib) = sshn(ii,ij) * tmask(ii,ij,1)          
    118                END DO  
    119                igrd = 2 
    120                DO ib = 1, ilen1(igrd) 
    121                   ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    122                   ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    123                   dta_bdy(ib_bdy)%u2d(ib) = pu2d(ii,ij) * umask(ii,ij,1)          
    124                END DO  
    125                igrd = 3 
    126                DO ib = 1, ilen1(igrd) 
    127                   ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    128                   ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    129                   dta_bdy(ib_bdy)%v2d(ib) = pv2d(ii,ij) * vmask(ii,ij,1)          
    130                END DO  
    131             ENDIF 
    132  
    133             IF( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN  
    134                ilen1(:) = nblen(:) 
    135                igrd = 2  
    136                DO ib = 1, ilen1(igrd) 
    137                   DO ik = 1, jpkm1 
     114               IF( dta%ll_ssh ) THEN  
     115                  igrd = 1 
     116                  DO ib = 1, ilen1(igrd) 
    138117                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    139118                     ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    140                      dta_bdy(ib_bdy)%u3d(ib,ik) =  ( un(ii,ij,ik) - pu2d(ii,ij) ) * umask(ii,ij,ik)          
    141                   END DO 
    142                END DO  
    143                igrd = 3  
    144                DO ib = 1, ilen1(igrd) 
    145                   DO ik = 1, jpkm1 
     119                     dta_bdy(ib_bdy)%ssh(ib) = sshn(ii,ij) * tmask(ii,ij,1)          
     120                  END DO  
     121               END IF 
     122               IF( dta%ll_u2d ) THEN  
     123                  igrd = 2 
     124                  DO ib = 1, ilen1(igrd) 
    146125                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    147126                     ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    148                      dta_bdy(ib_bdy)%v3d(ib,ik) =  ( vn(ii,ij,ik) - pv2d(ii,ij) ) * vmask(ii,ij,ik)          
    149                      END DO 
    150                END DO  
    151             ENDIF 
    152  
    153             IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 0 ) THEN  
    154                ilen1(:) = nblen(:) 
    155                igrd = 1                       ! Everything is at T-points here 
    156                DO ib = 1, ilen1(igrd) 
    157                   DO ik = 1, jpkm1 
     127                     dta_bdy(ib_bdy)%u2d(ib) = pun2d(ii,ij) * umask(ii,ij,1)          
     128                  END DO  
     129               END IF 
     130               IF( dta%ll_v2d ) THEN  
     131                  igrd = 3 
     132                  DO ib = 1, ilen1(igrd) 
    158133                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    159134                     ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    160                      dta_bdy(ib_bdy)%tem(ib,ik) = tsn(ii,ij,ik,jp_tem) * tmask(ii,ij,ik)          
    161                      dta_bdy(ib_bdy)%sal(ib,ik) = tsn(ii,ij,ik,jp_sal) * tmask(ii,ij,ik)          
    162                   END DO 
    163                END DO  
    164             ENDIF 
    165  
    166 #if defined key_lim2 
    167             IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN  
     135                     dta_bdy(ib_bdy)%v2d(ib) = pvn2d(ii,ij) * vmask(ii,ij,1)          
     136                  END DO  
     137               END IF 
     138            ENDIF 
     139 
     140            IF( nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN  
    168141               ilen1(:) = nblen(:) 
    169                igrd = 1                       ! Everything is at T-points here 
    170                DO ib = 1, ilen1(igrd) 
    171                   ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    172                   ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    173                   dta_bdy(ib_bdy)%frld(ib) = frld(ii,ij) * tmask(ii,ij,1)          
    174                   dta_bdy(ib_bdy)%hicif(ib) = hicif(ii,ij) * tmask(ii,ij,1)          
    175                   dta_bdy(ib_bdy)%hsnif(ib) = hsnif(ii,ij) * tmask(ii,ij,1)          
    176                END DO  
     142               IF( dta%ll_u3d ) THEN  
     143                  igrd = 2  
     144                  DO ib = 1, ilen1(igrd) 
     145                     DO ik = 1, jpkm1 
     146                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     147                        ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     148                        dta_bdy(ib_bdy)%u3d(ib,ik) =  ( un(ii,ij,ik) - pun2d(ii,ij) ) * umask(ii,ij,ik)          
     149                     END DO 
     150                  END DO  
     151               END IF 
     152               IF( dta%ll_v3d ) THEN  
     153                  igrd = 3  
     154                  DO ib = 1, ilen1(igrd) 
     155                     DO ik = 1, jpkm1 
     156                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     157                        ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     158                        dta_bdy(ib_bdy)%v3d(ib,ik) =  ( vn(ii,ij,ik) - pvn2d(ii,ij) ) * vmask(ii,ij,ik)          
     159                        END DO 
     160                  END DO  
     161               END IF 
     162            ENDIF 
     163 
     164            IF( nn_tra_dta(ib_bdy) .eq. 0 ) THEN  
     165               ilen1(:) = nblen(:) 
     166               IF( dta%ll_tem ) THEN 
     167                  igrd = 1  
     168                  DO ib = 1, ilen1(igrd) 
     169                     DO ik = 1, jpkm1 
     170                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     171                        ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     172                        dta_bdy(ib_bdy)%tem(ib,ik) = tsn(ii,ij,ik,jp_tem) * tmask(ii,ij,ik)          
     173                     END DO 
     174                  END DO  
     175               END IF 
     176               IF( dta%ll_sal ) THEN 
     177                  igrd = 1  
     178                  DO ib = 1, ilen1(igrd) 
     179                     DO ik = 1, jpkm1 
     180                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     181                        ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     182                        dta_bdy(ib_bdy)%sal(ib,ik) = tsn(ii,ij,ik,jp_sal) * tmask(ii,ij,ik)          
     183                     END DO 
     184                  END DO  
     185               END IF 
     186            ENDIF 
     187 
     188#if defined key_lim2 
     189            IF( nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN  
     190               ilen1(:) = nblen(:) 
     191               IF( dta%ll_frld ) THEN 
     192                  igrd = 1  
     193                  DO ib = 1, ilen1(igrd) 
     194                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     195                     ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     196                     dta_bdy(ib_bdy)%frld(ib) = frld(ii,ij) * tmask(ii,ij,1)          
     197                  END DO  
     198               END IF 
     199               IF( dta%ll_hicif ) THEN 
     200                  igrd = 1  
     201                  DO ib = 1, ilen1(igrd) 
     202                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     203                     ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     204                     dta_bdy(ib_bdy)%hicif(ib) = hicif(ii,ij) * tmask(ii,ij,1)          
     205                  END DO  
     206               END IF 
     207               IF( dta%ll_hsnif ) THEN 
     208                  igrd = 1  
     209                  DO ib = 1, ilen1(igrd) 
     210                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     211                     ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     212                     dta_bdy(ib_bdy)%hsnif(ib) = hsnif(ii,ij) * tmask(ii,ij,1)          
     213                  END DO  
     214               END IF 
    177215            ENDIF 
    178216#endif 
     
    180218         ENDDO ! ib_bdy 
    181219 
    182          CALL wrk_dealloc(jpi,jpj,pu2d,pv2d)  
     220         CALL wrk_dealloc(jpi,jpj,pun2d,pvn2d)  
    183221 
    184222      ENDIF ! kt .eq. nit000 
     
    189227      jstart = 1 
    190228      DO ib_bdy = 1, nb_bdy    
     229         dta => dta_bdy(ib_bdy) 
    191230         IF( nn_dta(ib_bdy) .eq. 1 ) THEN ! skip this bit if no external data required 
    192231       
     
    194233               ! Update barotropic boundary conditions only 
    195234               ! jit is optional argument for fld_read and bdytide_update 
    196                IF( nn_dyn2d(ib_bdy) .gt. 0 ) THEN 
     235               IF( cn_dyn2d(ib_bdy) /= 'none' ) THEN 
    197236                  IF( nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
    198                      dta_bdy(ib_bdy)%ssh(:) = 0._wp 
    199                      dta_bdy(ib_bdy)%u2d(:) = 0._wp 
    200                      dta_bdy(ib_bdy)%v2d(:) = 0._wp 
     237                     IF( dta%ll_ssh ) dta%ssh(:) = 0.0 
     238                     IF( dta%ll_u2d ) dta%u2d(:) = 0.0 
     239                     IF( dta%ll_u3d ) dta%v2d(:) = 0.0 
    201240                  ENDIF 
    202                   IF (nn_tra(ib_bdy).ne.4) THEN 
    203                      IF( nn_dyn2d_dta(ib_bdy) .EQ. 1 .OR. nn_dyn2d_dta(ib_bdy) .EQ. 3 .OR.  & 
    204                        & (ln_full_vel_array(ib_bdy) .AND. nn_dyn3d_dta(ib_bdy).eq.1) )THEN 
    205  
    206                         ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 
    207                         jend = nb_bdy_fld(ib_bdy) 
    208                         IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 
     241                  IF (cn_tra(ib_bdy) /= 'runoff') THEN 
     242                     IF( nn_dyn2d_dta(ib_bdy) .EQ. 1 .OR. nn_dyn2d_dta(ib_bdy) .EQ. 3 ) THEN 
     243 
     244                        jend = jstart + dta%nread(2) - 1 
    209245                        CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend),  & 
    210246                                     & kit=jit, kt_offset=time_offset ) 
    211                         IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 
    212  
    213                         ! If full velocities in boundary data then split into barotropic and baroclinic data 
     247 
     248                        ! If full velocities in boundary data then extract barotropic velocities from 3D fields 
    214249                        IF( ln_full_vel_array(ib_bdy) .AND.                                             & 
    215250                          &    ( nn_dyn2d_dta(ib_bdy) .EQ. 1 .OR. nn_dyn2d_dta(ib_bdy) .EQ. 3 .OR.  & 
     
    217252 
    218253                           igrd = 2                      ! zonal velocity 
    219                            dta_bdy(ib_bdy)%u2d(:) = 0._wp 
     254                           dta%u2d(:) = 0.0 
    220255                           DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    221256                              ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    222257                              ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    223258                              DO ik = 1, jpkm1 
    224                                  dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 
    225                        &                          + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 
     259                                 dta%u2d(ib) = dta%u2d(ib) & 
     260                       &                          + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta%u3d(ib,ik) 
    226261                              END DO 
    227                               dta_bdy(ib_bdy)%u2d(ib) =  dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 
    228                               DO ik = 1, jpkm1 
    229                                  dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 
    230                               END DO 
     262                              dta%u2d(ib) =  dta%u2d(ib) * hur(ii,ij) 
    231263                           END DO 
    232264                           igrd = 3                      ! meridional velocity 
    233                            dta_bdy(ib_bdy)%v2d(:) = 0._wp 
     265                           dta%v2d(:) = 0.0 
    234266                           DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    235267                              ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    236268                              ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    237269                              DO ik = 1, jpkm1 
    238                                  dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 
    239                        &                       + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 
     270                                 dta%v2d(ib) = dta%v2d(ib) & 
     271                       &                       + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta%v3d(ib,ik) 
    240272                              END DO 
    241                               dta_bdy(ib_bdy)%v2d(ib) =  dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 
    242                               DO ik = 1, jpkm1 
    243                                  dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 
    244                               END DO 
     273                              dta%v2d(ib) =  dta%v2d(ib) * hvr(ii,ij) 
    245274                           END DO 
    246275                        ENDIF                     
    247276                     ENDIF 
    248277                     IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
    249                         CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy),   &  
     278                        CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta, td=tides(ib_bdy),   &  
    250279                          &                 jit=jit, time_offset=time_offset ) 
    251280                     ENDIF 
     
    253282               ENDIF 
    254283            ELSE 
    255                IF (nn_tra(ib_bdy).eq.4) then      ! runoff condition 
     284               IF (cn_tra(ib_bdy) == 'runoff') then      ! runoff condition 
    256285                  jend = nb_bdy_fld(ib_bdy) 
    257286                  CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend),  & 
     
    262291                     ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    263292                     ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    264                      dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) ) 
     293                     dta%u2d(ib) = dta%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) ) 
    265294                  END DO 
    266295                  ! 
     
    269298                     ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    270299                     ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    271                      dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) ) 
     300                     dta%v2d(ib) = dta%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) ) 
    272301                  END DO 
    273302               ELSE 
    274                   IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
    275                      dta_bdy(ib_bdy)%ssh(:) = 0._wp 
    276                      dta_bdy(ib_bdy)%u2d(:) = 0._wp 
    277                      dta_bdy(ib_bdy)%v2d(:) = 0._wp 
     303                  IF( nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
     304                     IF( dta%ll_ssh ) dta%ssh(:) = 0.0 
     305                     IF( dta%ll_u2d ) dta%u2d(:) = 0.0 
     306                     IF( dta%ll_v2d ) dta%v2d(:) = 0.0 
    278307                  ENDIF 
    279                   IF( nb_bdy_fld(ib_bdy) .gt. 0 ) THEN ! update external data 
    280                      jend = nb_bdy_fld(ib_bdy) 
     308                  IF( dta%nread(1) .gt. 0 ) THEN ! update external data 
     309                     jend = jstart + dta%nread(1) - 1 
    281310                     CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), & 
    282311                                  & map=nbmap_ptr(jstart:jend), kt_offset=time_offset ) 
     
    287316                    &   nn_dyn3d_dta(ib_bdy) .EQ. 1 ) ) THEN 
    288317                     igrd = 2                      ! zonal velocity 
    289                      dta_bdy(ib_bdy)%u2d(:) = 0._wp 
     318                     dta%u2d(:) = 0.0 
    290319                     DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    291320                        ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    292321                        ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    293322                        DO ik = 1, jpkm1 
    294                            dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 
    295                  &                       + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 
     323                           dta%u2d(ib) = dta%u2d(ib) & 
     324                 &                       + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta%u3d(ib,ik) 
    296325                        END DO 
    297                         dta_bdy(ib_bdy)%u2d(ib) =  dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 
     326                        dta%u2d(ib) =  dta%u2d(ib) * hur(ii,ij) 
    298327                        DO ik = 1, jpkm1 
    299                            dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 
     328                           dta%u3d(ib,ik) = dta%u3d(ib,ik) - dta%u2d(ib) 
    300329                        END DO 
    301330                     END DO 
    302331                     igrd = 3                      ! meridional velocity 
    303                      dta_bdy(ib_bdy)%v2d(:) = 0._wp 
     332                     dta%v2d(:) = 0.0 
    304333                     DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    305334                        ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    306335                        ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    307336                        DO ik = 1, jpkm1 
    308                            dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 
    309                  &                       + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 
     337                           dta%v2d(ib) = dta%v2d(ib) & 
     338                 &                       + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta%v3d(ib,ik) 
    310339                        END DO 
    311                         dta_bdy(ib_bdy)%v2d(ib) =  dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 
     340                        dta%v2d(ib) =  dta%v2d(ib) * hvr(ii,ij) 
    312341                        DO ik = 1, jpkm1 
    313                            dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 
     342                           dta%v3d(ib,ik) = dta%v3d(ib,ik) - dta%v2d(ib) 
    314343                        END DO 
    315344                     END DO 
    316345                  ENDIF 
    317                ENDIF 
    318             ENDIF 
    319             jstart = jend+1 
     346 
     347               ENDIF 
     348            ENDIF 
     349            jstart = jstart + dta%nread(1) 
    320350         END IF ! nn_dta(ib_bdy) = 1 
    321351      END DO  ! ib_bdy 
    322352 
     353      ! bg jchanut tschanges 
    323354#if defined key_tide 
    324355      ! Add tides if not split-explicit free surface else this is done in ts loop 
    325356      IF (.NOT.lk_dynspg_ts) CALL bdy_dta_tides( kt=kt, time_offset=time_offset ) 
    326357#endif 
     358      ! end jchanut tschanges 
     359 
    327360      IF ( ln_apr_obc ) THEN 
    328361         DO ib_bdy = 1, nb_bdy 
    329             IF (nn_tra(ib_bdy).NE.4)THEN 
     362            IF (cn_tra(ib_bdy) /= 'runoff')THEN 
    330363               igrd = 1                      ! meridional velocity 
    331364               DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 
     
    350383      !!                for open boundary conditions 
    351384      !! 
    352       !! ** Method  :   Use fldread.F90 
     385      !! ** Method  :    
    353386      !!                 
    354387      !!---------------------------------------------------------------------- 
     
    362395                                                                ! =F => baroclinic velocities in 3D boundary data 
    363396      INTEGER                                ::   ilen_global   ! Max length required for global bdy dta arrays 
    364       INTEGER,              DIMENSION(jpbgrd) ::  ilen0         ! size of local arrays 
    365397      INTEGER, ALLOCATABLE, DIMENSION(:)     ::   ilen1, ilen3  ! size of 1st and 3rd dimensions of local arrays 
    366398      INTEGER, ALLOCATABLE, DIMENSION(:)     ::   ibdy           ! bdy set for a particular jfld 
    367399      INTEGER, ALLOCATABLE, DIMENSION(:)     ::   igrid         ! index for grid type (1,2,3 = T,U,V) 
    368400      INTEGER, POINTER, DIMENSION(:)         ::   nblen, nblenrim  ! short cuts 
     401      TYPE(OBC_DATA), POINTER                ::   dta           ! short cut 
    369402      TYPE(FLD_N), ALLOCATABLE, DIMENSION(:) ::   blf_i         !  array of namelist information structures 
    370403      TYPE(FLD_N) ::   bn_tem, bn_sal, bn_u3d, bn_v3d   !  
     
    404437      nb_bdy_fld(:) = 0 
    405438      DO ib_bdy = 1, nb_bdy          
    406          IF( nn_dyn2d(ib_bdy) .gt. 0 .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN 
     439         IF( cn_dyn2d(ib_bdy) /= 'none' .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN 
    407440            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 3 
    408441         ENDIF 
    409          IF( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ) THEN 
     442         IF( cn_dyn3d(ib_bdy) /= 'none' .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ) THEN 
    410443            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 
    411444         ENDIF 
    412          IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 1  ) THEN 
     445         IF( cn_tra(ib_bdy) /= 'none' .and. nn_tra_dta(ib_bdy) .eq. 1  ) THEN 
    413446            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 
    414447         ENDIF 
    415448#if defined key_lim2 
    416          IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 1  ) THEN 
     449         IF( cn_ice_lim2(ib_bdy) /= 'none' .and. nn_ice_lim2_dta(ib_bdy) .eq. 1  ) THEN 
    417450            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 3 
    418451         ENDIF 
     
    472505            nblen => idx_bdy(ib_bdy)%nblen 
    473506            nblenrim => idx_bdy(ib_bdy)%nblenrim 
     507            dta => dta_bdy(ib_bdy) 
     508            dta%nread(2) = 0 
    474509 
    475510            ! Only read in necessary fields for this set. 
    476511            ! Important that barotropic variables come first. 
    477             IF( nn_dyn2d(ib_bdy) .gt. 0 .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN  
    478  
    479                IF( nn_dyn2d(ib_bdy) .ne. jp_frs .and. nn_tra(ib_bdy) .ne. 4 ) THEN ! runoff condition : no ssh reading 
     512            IF( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) THEN  
     513 
     514               IF( dta%ll_ssh ) THEN  
     515                  if(lwp) write(numout,*) '++++++ reading in ssh field' 
    480516                  jfld = jfld + 1 
    481517                  blf_i(jfld) = bn_ssh 
     
    484520                  ilen1(jfld) = nblen(igrid(jfld)) 
    485521                  ilen3(jfld) = 1 
    486                ENDIF 
    487  
    488                IF( .not. ln_full_vel_array(ib_bdy) ) THEN 
     522                  dta%nread(2) = dta%nread(2) + 1 
     523               ENDIF 
     524 
     525               IF( dta%ll_u2d .and. .not. ln_full_vel_array(ib_bdy) ) THEN 
     526                  if(lwp) write(numout,*) '++++++ reading in u2d field' 
    489527                  jfld = jfld + 1 
    490528                  blf_i(jfld) = bn_u2d 
     
    493531                  ilen1(jfld) = nblen(igrid(jfld)) 
    494532                  ilen3(jfld) = 1 
    495  
     533                  dta%nread(2) = dta%nread(2) + 1 
     534               ENDIF 
     535 
     536               IF( dta%ll_v2d .and. .not. ln_full_vel_array(ib_bdy) ) THEN 
     537                  if(lwp) write(numout,*) '++++++ reading in v2d field' 
    496538                  jfld = jfld + 1 
    497539                  blf_i(jfld) = bn_v2d 
     
    500542                  ilen1(jfld) = nblen(igrid(jfld)) 
    501543                  ilen3(jfld) = 1 
    502                ENDIF 
    503  
    504             ENDIF 
    505  
    506             ! baroclinic velocities 
    507             IF( ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ) .or. & 
    508            &      ( ln_full_vel_array(ib_bdy) .and. nn_dyn2d(ib_bdy) .gt. 0 .and.  & 
    509            &        ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) ) THEN 
    510  
    511                jfld = jfld + 1 
    512                blf_i(jfld) = bn_u3d 
    513                ibdy(jfld) = ib_bdy 
    514                igrid(jfld) = 2 
    515                ilen1(jfld) = nblen(igrid(jfld)) 
    516                ilen3(jfld) = jpk 
    517  
    518                jfld = jfld + 1 
    519                blf_i(jfld) = bn_v3d 
    520                ibdy(jfld) = ib_bdy 
    521                igrid(jfld) = 3 
    522                ilen1(jfld) = nblen(igrid(jfld)) 
    523                ilen3(jfld) = jpk 
     544                  dta%nread(2) = dta%nread(2) + 1 
     545               ENDIF 
     546 
     547            ENDIF 
     548 
     549            ! read 3D velocities if baroclinic velocities require OR if 
     550            ! barotropic velocities required and ln_full_vel set to .true. 
     551            IF( nn_dyn3d_dta(ib_bdy) .eq. 1 .or. & 
     552           &  ( ln_full_vel_array(ib_bdy) .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) ) THEN 
     553 
     554               IF( dta%ll_u3d .or. ( ln_full_vel_array(ib_bdy) .and. dta%ll_u2d ) ) THEN 
     555                  if(lwp) write(numout,*) '++++++ reading in u3d field' 
     556                  jfld = jfld + 1 
     557                  blf_i(jfld) = bn_u3d 
     558                  ibdy(jfld) = ib_bdy 
     559                  igrid(jfld) = 2 
     560                  ilen1(jfld) = nblen(igrid(jfld)) 
     561                  ilen3(jfld) = jpk 
     562                  IF( ln_full_vel_array(ib_bdy) .and. dta%ll_u2d ) dta%nread(2) = dta%nread(2) + 1 
     563               ENDIF 
     564 
     565               IF( dta%ll_v3d .or. ( ln_full_vel_array(ib_bdy) .and. dta%ll_v2d ) ) THEN 
     566                  if(lwp) write(numout,*) '++++++ reading in v3d field' 
     567                  jfld = jfld + 1 
     568                  blf_i(jfld) = bn_v3d 
     569                  ibdy(jfld) = ib_bdy 
     570                  igrid(jfld) = 3 
     571                  ilen1(jfld) = nblen(igrid(jfld)) 
     572                  ilen3(jfld) = jpk 
     573                  IF( ln_full_vel_array(ib_bdy) .and. dta%ll_v2d ) dta%nread(2) = dta%nread(2) + 1 
     574               ENDIF 
    524575 
    525576            ENDIF 
    526577 
    527578            ! temperature and salinity 
    528             IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 1 ) THEN 
    529  
    530                jfld = jfld + 1 
    531                blf_i(jfld) = bn_tem 
    532                ibdy(jfld) = ib_bdy 
    533                igrid(jfld) = 1 
    534                ilen1(jfld) = nblen(igrid(jfld)) 
    535                ilen3(jfld) = jpk 
    536  
    537                jfld = jfld + 1 
    538                blf_i(jfld) = bn_sal 
    539                ibdy(jfld) = ib_bdy 
    540                igrid(jfld) = 1 
    541                ilen1(jfld) = nblen(igrid(jfld)) 
    542                ilen3(jfld) = jpk 
     579            IF( nn_tra_dta(ib_bdy) .eq. 1 ) THEN 
     580 
     581               IF( dta%ll_tem ) THEN 
     582                  if(lwp) write(numout,*) '++++++ reading in tem field' 
     583                  jfld = jfld + 1 
     584                  blf_i(jfld) = bn_tem 
     585                  ibdy(jfld) = ib_bdy 
     586                  igrid(jfld) = 1 
     587                  ilen1(jfld) = nblen(igrid(jfld)) 
     588                  ilen3(jfld) = jpk 
     589               ENDIF 
     590 
     591               IF( dta%ll_sal ) THEN 
     592                  if(lwp) write(numout,*) '++++++ reading in sal field' 
     593                  jfld = jfld + 1 
     594                  blf_i(jfld) = bn_sal 
     595                  ibdy(jfld) = ib_bdy 
     596                  igrid(jfld) = 1 
     597                  ilen1(jfld) = nblen(igrid(jfld)) 
     598                  ilen3(jfld) = jpk 
     599               ENDIF 
    543600 
    544601            ENDIF 
     
    546603#if defined key_lim2 
    547604            ! sea ice 
    548             IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 1 ) THEN 
    549  
    550                jfld = jfld + 1 
    551                blf_i(jfld) = bn_frld 
    552                ibdy(jfld) = ib_bdy 
    553                igrid(jfld) = 1 
    554                ilen1(jfld) = nblen(igrid(jfld)) 
    555                ilen3(jfld) = 1 
    556  
    557                jfld = jfld + 1 
    558                blf_i(jfld) = bn_hicif 
    559                ibdy(jfld) = ib_bdy 
    560                igrid(jfld) = 1 
    561                ilen1(jfld) = nblen(igrid(jfld)) 
    562                ilen3(jfld) = 1 
    563  
    564                jfld = jfld + 1 
    565                blf_i(jfld) = bn_hsnif 
    566                ibdy(jfld) = ib_bdy 
    567                igrid(jfld) = 1 
    568                ilen1(jfld) = nblen(igrid(jfld)) 
    569                ilen3(jfld) = 1 
     605            IF( nn_ice_lim2_dta(ib_bdy) .eq. 1 ) THEN 
     606 
     607               IF( dta%ll_frld ) THEN 
     608                  jfld = jfld + 1 
     609                  blf_i(jfld) = bn_frld 
     610                  ibdy(jfld) = ib_bdy 
     611                  igrid(jfld) = 1 
     612                  ilen1(jfld) = nblen(igrid(jfld)) 
     613                  ilen3(jfld) = 1 
     614               ENDIF 
     615 
     616               IF( dta%ll_hicif ) THEN 
     617                  jfld = jfld + 1 
     618                  blf_i(jfld) = bn_hicif 
     619                  ibdy(jfld) = ib_bdy 
     620                  igrid(jfld) = 1 
     621                  ilen1(jfld) = nblen(igrid(jfld)) 
     622                  ilen3(jfld) = 1 
     623               ENDIF 
     624 
     625               IF( dta%ll_hsnif ) THEN 
     626                  jfld = jfld + 1 
     627                  blf_i(jfld) = bn_hsnif 
     628                  ibdy(jfld) = ib_bdy 
     629                  igrid(jfld) = 1 
     630                  ilen1(jfld) = nblen(igrid(jfld)) 
     631                  ilen3(jfld) = 1 
     632               ENDIF 
    570633 
    571634            ENDIF 
     
    582645            ENDIF 
    583646 
     647            dta%nread(1) = nb_bdy_fld(ib_bdy) 
     648 
    584649         ENDIF ! nn_dta .eq. 1 
    585650      ENDDO ! ib_bdy 
     
    610675 
    611676         nblen => idx_bdy(ib_bdy)%nblen 
    612          nblenrim => idx_bdy(ib_bdy)%nblenrim 
    613  
    614          IF (nn_dyn2d(ib_bdy) .gt. 0) THEN 
    615             IF( nn_dyn2d_dta(ib_bdy) .eq. 0 .or. nn_dyn2d_dta(ib_bdy) .eq. 2 .or. ln_full_vel_array(ib_bdy) ) THEN 
    616                ilen0(1:3) = nblen(1:3) 
    617                ALLOCATE( dta_bdy(ib_bdy)%u2d(ilen0(2)) ) 
    618                ALLOCATE( dta_bdy(ib_bdy)%v2d(ilen0(3)) ) 
    619                IF ( nn_dyn2d(ib_bdy) .ne. jp_frs .and. (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3) ) THEN 
    620                   jfld = jfld + 1 
    621                   dta_bdy(ib_bdy)%ssh => bf(jfld)%fnow(:,1,1) 
     677         dta => dta_bdy(ib_bdy) 
     678 
     679         if(lwp) then 
     680            write(numout,*) '++++++ dta%ll_ssh = ',dta%ll_ssh 
     681            write(numout,*) '++++++ dta%ll_u2d = ',dta%ll_u2d 
     682            write(numout,*) '++++++ dta%ll_v2d = ',dta%ll_v2d 
     683            write(numout,*) '++++++ dta%ll_u3d = ',dta%ll_u3d 
     684            write(numout,*) '++++++ dta%ll_v3d = ',dta%ll_v3d 
     685            write(numout,*) '++++++ dta%ll_tem = ',dta%ll_tem 
     686            write(numout,*) '++++++ dta%ll_sal = ',dta%ll_sal 
     687         endif 
     688 
     689         IF ( nn_dyn2d_dta(ib_bdy) .eq. 0 .or. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN 
     690            if(lwp) write(numout,*) '++++++ dta%ssh/u2d/u3d allocated space' 
     691            IF( dta%ll_ssh ) ALLOCATE( dta%ssh(nblen(1)) ) 
     692            IF( dta%ll_u2d ) ALLOCATE( dta%u2d(nblen(2)) ) 
     693            IF( dta%ll_v2d ) ALLOCATE( dta%v2d(nblen(3)) ) 
     694         ENDIF 
     695         IF ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) THEN 
     696            IF( dta%ll_ssh ) THEN 
     697               if(lwp) write(numout,*) '++++++ dta%ssh pointing to fnow' 
     698               jfld = jfld + 1 
     699               dta%ssh => bf(jfld)%fnow(:,1,1) 
     700            ENDIF 
     701            IF ( dta%ll_u2d ) THEN 
     702               IF ( ln_full_vel_array(ib_bdy) ) THEN 
     703                  if(lwp) write(numout,*) '++++++ dta%u2d allocated space' 
     704                  ALLOCATE( dta%u2d(nblen(2)) ) 
    622705               ELSE 
    623                   ALLOCATE( dta_bdy(ib_bdy)%ssh(nblen(1)) ) 
    624                ENDIF 
    625             ELSE 
    626                IF( nn_dyn2d(ib_bdy) .ne. jp_frs ) THEN 
    627                   jfld = jfld + 1 
    628                   dta_bdy(ib_bdy)%ssh => bf(jfld)%fnow(:,1,1) 
    629                ENDIF 
     706                  if(lwp) write(numout,*) '++++++ dta%u2d pointing to fnow' 
     707                  jfld = jfld + 1 
     708                  dta%u2d => bf(jfld)%fnow(:,1,1) 
     709               ENDIF 
     710            ENDIF 
     711            IF ( dta%ll_v2d ) THEN 
     712               IF ( ln_full_vel_array(ib_bdy) ) THEN 
     713                  if(lwp) write(numout,*) '++++++ dta%v2d allocated space' 
     714                  ALLOCATE( dta%v2d(nblen(3)) ) 
     715               ELSE 
     716                  if(lwp) write(numout,*) '++++++ dta%v2d pointing to fnow' 
     717                  jfld = jfld + 1 
     718                  dta%v2d => bf(jfld)%fnow(:,1,1) 
     719               ENDIF 
     720            ENDIF 
     721         ENDIF 
     722 
     723         IF ( nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 
     724            if(lwp) write(numout,*) '++++++ dta%u3d/v3d allocated space' 
     725            IF( dta%ll_u3d ) ALLOCATE( dta_bdy(ib_bdy)%u3d(nblen(2),jpk) ) 
     726            IF( dta%ll_v3d ) ALLOCATE( dta_bdy(ib_bdy)%v3d(nblen(3),jpk) ) 
     727         ENDIF 
     728         IF ( nn_dyn3d_dta(ib_bdy) .eq. 1 .or. & 
     729           &  ( ln_full_vel_array(ib_bdy) .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) ) THEN 
     730            IF ( dta%ll_u3d .or. ( ln_full_vel_array(ib_bdy) .and. dta%ll_u2d ) ) THEN 
     731               if(lwp) write(numout,*) '++++++ dta%u3d pointing to fnow' 
    630732               jfld = jfld + 1 
    631                dta_bdy(ib_bdy)%u2d => bf(jfld)%fnow(:,1,1) 
     733               dta_bdy(ib_bdy)%u3d => bf(jfld)%fnow(:,1,:) 
     734            ENDIF 
     735            IF ( dta%ll_v3d .or. ( ln_full_vel_array(ib_bdy) .and. dta%ll_v2d ) ) THEN 
     736               if(lwp) write(numout,*) '++++++ dta%v3d pointing to fnow' 
    632737               jfld = jfld + 1 
    633                dta_bdy(ib_bdy)%v2d => bf(jfld)%fnow(:,1,1) 
    634             ENDIF 
    635          ENDIF 
    636  
    637          IF ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 
    638             ilen0(1:3) = nblen(1:3) 
    639             ALLOCATE( dta_bdy(ib_bdy)%u3d(ilen0(2),jpk) ) 
    640             ALLOCATE( dta_bdy(ib_bdy)%v3d(ilen0(3),jpk) ) 
    641          ENDIF 
    642          IF ( ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 1 ).or. & 
    643            &  ( ln_full_vel_array(ib_bdy) .and. nn_dyn2d(ib_bdy) .gt. 0 .and.   & 
    644            &    ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) ) THEN 
    645             jfld = jfld + 1 
    646             dta_bdy(ib_bdy)%u3d => bf(jfld)%fnow(:,1,:) 
    647             jfld = jfld + 1 
    648             dta_bdy(ib_bdy)%v3d => bf(jfld)%fnow(:,1,:) 
    649          ENDIF 
    650  
    651          IF (nn_tra(ib_bdy) .gt. 0) THEN 
    652             IF( nn_tra_dta(ib_bdy) .eq. 0 ) THEN 
    653                ilen0(1:3) = nblen(1:3) 
    654                ALLOCATE( dta_bdy(ib_bdy)%tem(ilen0(1),jpk) ) 
    655                ALLOCATE( dta_bdy(ib_bdy)%sal(ilen0(1),jpk) ) 
    656             ELSE 
     738               dta_bdy(ib_bdy)%v3d => bf(jfld)%fnow(:,1,:) 
     739            ENDIF 
     740         ENDIF 
     741 
     742         IF( nn_tra_dta(ib_bdy) .eq. 0 ) THEN 
     743            if(lwp) write(numout,*) '++++++ dta%tem/sal allocated space' 
     744            IF( dta%ll_tem ) ALLOCATE( dta_bdy(ib_bdy)%tem(nblen(1),jpk) ) 
     745            IF( dta%ll_sal ) ALLOCATE( dta_bdy(ib_bdy)%sal(nblen(1),jpk) ) 
     746         ELSE 
     747            IF( dta%ll_tem ) THEN 
     748               if(lwp) write(numout,*) '++++++ dta%tem pointing to fnow' 
    657749               jfld = jfld + 1 
    658750               dta_bdy(ib_bdy)%tem => bf(jfld)%fnow(:,1,:) 
     751            ENDIF 
     752            IF( dta%ll_sal ) THEN  
     753               if(lwp) write(numout,*) '++++++ dta%sal pointing to fnow' 
    659754               jfld = jfld + 1 
    660755               dta_bdy(ib_bdy)%sal => bf(jfld)%fnow(:,1,:) 
     
    665760         IF (nn_ice_lim2(ib_bdy) .gt. 0) THEN 
    666761            IF( nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN 
    667                ilen0(1:3) = nblen(1:3) 
    668                ALLOCATE( dta_bdy(ib_bdy)%frld(ilen0(1)) ) 
    669                ALLOCATE( dta_bdy(ib_bdy)%hicif(ilen0(1)) ) 
    670                ALLOCATE( dta_bdy(ib_bdy)%hsnif(ilen0(1)) ) 
     762               ALLOCATE( dta_bdy(ib_bdy)%frld(nblen(1)) ) 
     763               ALLOCATE( dta_bdy(ib_bdy)%hicif(nblen(1)) ) 
     764               ALLOCATE( dta_bdy(ib_bdy)%hsnif(nblen(1)) ) 
    671765            ELSE 
    672766               jfld = jfld + 1 
Note: See TracChangeset for help on using the changeset viewer.