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 3583 for branches/2012/dev_MERCATOR_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90 – NEMO

Ignore:
Timestamp:
2012-11-16T17:18:17+01:00 (11 years ago)
Author:
cbricaud
Message:

add modification from dev_r3327_MERCATOR1_BDY branch in dev_MERCATOR_2012_rev3555 branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_MERCATOR_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r3294 r3583  
    3232   USE ice_2 
    3333#endif 
     34   USE sbcapr 
    3435 
    3536   IMPLICIT NONE 
     
    108109 
    109110            IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 0 ) THEN  
    110                IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 
    111                   ilen1(:) = nblen(:) 
    112                ELSE 
    113                   ilen1(:) = nblenrim(:) 
    114                ENDIF 
     111               ilen1(:) = nblen(:) 
    115112               igrd = 1 
    116113               DO ib = 1, ilen1(igrd) 
     
    134131 
    135132            IF( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN  
    136                IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 
    137                   ilen1(:) = nblen(:) 
    138                ELSE 
    139                   ilen1(:) = nblenrim(:) 
    140                ENDIF 
     133               ilen1(:) = nblen(:) 
    141134               igrd = 2  
    142135               DO ib = 1, ilen1(igrd) 
     
    158151 
    159152            IF( nn_tra(ib_bdy) .gt. 0 .and. nn_tra_dta(ib_bdy) .eq. 0 ) THEN  
    160                IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 
    161                   ilen1(:) = nblen(:) 
    162                ELSE 
    163                   ilen1(:) = nblenrim(:) 
    164                ENDIF 
     153               ilen1(:) = nblen(:) 
    165154               igrd = 1                       ! Everything is at T-points here 
    166155               DO ib = 1, ilen1(igrd) 
     
    176165#if defined key_lim2 
    177166            IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN  
    178                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
    179                   ilen1(:) = nblen(:) 
    180                ELSE 
    181                   ilen1(:) = nblenrim(:) 
    182                ENDIF 
     167               ilen1(:) = nblen(:) 
    183168               igrd = 1                       ! Everything is at T-points here 
    184169               DO ib = 1, ilen1(igrd) 
     
    207192            IF( PRESENT(jit) ) THEN 
    208193               ! Update barotropic boundary conditions only 
    209                ! jit is optional argument for fld_read and tide_update 
     194               ! jit is optional argument for fld_read and bdytide_update 
    210195               IF( nn_dyn2d(ib_bdy) .gt. 0 ) THEN 
    211196                  IF( nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
     
    214199                     dta_bdy(ib_bdy)%v2d(:) = 0.0 
    215200                  ENDIF 
    216                   IF( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) THEN ! update external data 
    217                      jend = jstart + 2 
    218                      CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend),   & 
    219                      &              jit=jit, time_offset=time_offset ) 
    220                   ENDIF 
    221                   IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
    222                      CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy),   &  
    223                      &                 jit=jit, time_offset=time_offset ) 
     201                  IF (nn_tra(ib_bdy).ne.4) THEN 
     202                     IF (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3.or.(ln_full_vel_array(ib_bdy).and.nn_dyn3d_dta(ib_bdy).eq.1)) THEN 
     203                        ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 
     204                        jend = nb_bdy_fld(ib_bdy) 
     205                        IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 
     206                        CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), jit=jit, time_offset=time_offset ) 
     207                        IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 
     208                        ! If full velocities in boundary data then split into barotropic and baroclinic data 
     209                        IF( ln_full_vel_array(ib_bdy) .and.                                             & 
     210                       &    ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 
     211                           igrd = 2                      ! zonal velocity 
     212                           dta_bdy(ib_bdy)%u2d(:) = 0.0 
     213                           DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     214                              ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     215                              ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     216                              DO ik = 1, jpkm1 
     217                                 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 
     218                       &                          + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 
     219                              END DO 
     220                              dta_bdy(ib_bdy)%u2d(ib) =  dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 
     221                              DO ik = 1, jpkm1 
     222                                 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 
     223                              END DO 
     224                           END DO 
     225                           igrd = 3                      ! meridional velocity 
     226                           dta_bdy(ib_bdy)%v2d(:) = 0.0 
     227                           DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     228                              ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     229                              ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     230                              DO ik = 1, jpkm1 
     231                                 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 
     232                       &                       + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 
     233                              END DO 
     234                              dta_bdy(ib_bdy)%v2d(ib) =  dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 
     235                              DO ik = 1, jpkm1 
     236                                 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 
     237                              END DO 
     238                           END DO 
     239                        ENDIF                     
     240                     ENDIF 
     241                     IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
     242                        CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy),   &  
     243                          &                 jit=jit, time_offset=time_offset ) 
     244                     ENDIF 
    224245                  ENDIF 
    225246               ENDIF 
    226247            ELSE 
    227                IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
    228                   dta_bdy(ib_bdy)%ssh(:) = 0.0 
    229                   dta_bdy(ib_bdy)%u2d(:) = 0.0 
    230                   dta_bdy(ib_bdy)%v2d(:) = 0.0 
     248               IF (nn_tra(ib_bdy).eq.4) then      ! runoff condition 
     249                  jend = nb_bdy_fld(ib_bdy) 
     250                  CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), time_offset=time_offset ) 
     251                  ! 
     252                  igrd = 2                      ! zonal velocity 
     253                  DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     254                     ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     255                     ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     256                     dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) ) 
     257                  END DO 
     258                  ! 
     259                  igrd = 3                      ! meridional velocity 
     260                  DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     261                     ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     262                     ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     263                     dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) ) 
     264                  END DO 
     265               ELSE 
     266                  IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays 
     267                     dta_bdy(ib_bdy)%ssh(:) = 0.0 
     268                     dta_bdy(ib_bdy)%u2d(:) = 0.0 
     269                     dta_bdy(ib_bdy)%v2d(:) = 0.0 
     270                  ENDIF 
     271                  IF( nb_bdy_fld(ib_bdy) .gt. 0 ) THEN ! update external data 
     272                     jend = nb_bdy_fld(ib_bdy) 
     273                     CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), time_offset=time_offset ) 
     274                  ENDIF 
     275                  ! If full velocities in boundary data then split into barotropic and baroclinic data 
     276                  IF( ln_full_vel_array(ib_bdy) .and.                                             & 
     277                 &    ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 
     278                     igrd = 2                      ! zonal velocity 
     279                     dta_bdy(ib_bdy)%u2d(:) = 0.0 
     280                     DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     281                        ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     282                        ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     283                        DO ik = 1, jpkm1 
     284                           dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 
     285                 &                       + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 
     286                        END DO 
     287                        dta_bdy(ib_bdy)%u2d(ib) =  dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 
     288                        DO ik = 1, jpkm1 
     289                           dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 
     290                        END DO 
     291                     END DO 
     292                     igrd = 3                      ! meridional velocity 
     293                     dta_bdy(ib_bdy)%v2d(:) = 0.0 
     294                     DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     295                        ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     296                        ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     297                        DO ik = 1, jpkm1 
     298                           dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 
     299                 &                       + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 
     300                        END DO 
     301                        dta_bdy(ib_bdy)%v2d(ib) =  dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 
     302                        DO ik = 1, jpkm1 
     303                           dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 
     304                        END DO 
     305                     END DO 
     306                  ENDIF 
     307                  IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
     308                     CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset ) 
     309                  ENDIF 
    231310               ENDIF 
    232                IF( nb_bdy_fld(ib_bdy) .gt. 0 ) THEN ! update external data 
    233                   jend = jstart + nb_bdy_fld(ib_bdy) - 1 
    234                   CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), time_offset=time_offset ) 
    235                ENDIF 
    236                IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 
    237                   CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset ) 
    238                ENDIF 
    239311            ENDIF 
    240312            jstart = jend+1 
    241  
    242             ! If full velocities in boundary data then split into barotropic and baroclinic data 
    243             ! (Note that we have already made sure that you can't use ln_full_vel = .true. at the same 
    244             ! time as the dynspg_ts option).  
    245  
    246             IF( ln_full_vel_array(ib_bdy) .and.                                             &  
    247            &    ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN  
    248  
    249                igrd = 2                      ! zonal velocity 
    250                dta_bdy(ib_bdy)%u2d(:) = 0.0 
    251                DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     313         END IF ! nn_dta(ib_bdy) = 1 
     314      END DO  ! ib_bdy 
     315 
     316      IF ( ln_apr_obc ) THEN 
     317         DO ib_bdy = 1, nb_bdy 
     318            IF (nn_tra(ib_bdy).NE.4)THEN 
     319               igrd = 1                      ! meridional velocity 
     320               DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 
    252321                  ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    253322                  ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    254                   DO ik = 1, jpkm1 
    255                      dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 
    256               &                                + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 
    257                   END DO 
    258                   dta_bdy(ib_bdy)%u2d(ib) =  dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 
    259                   DO ik = 1, jpkm1 
    260                      dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib)  
    261                   END DO 
    262                END DO 
    263  
    264                igrd = 3                      ! meridional velocity 
    265                dta_bdy(ib_bdy)%v2d(:) = 0.0 
    266                DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    267                   ii   = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    268                   ij   = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    269                   DO ik = 1, jpkm1 
    270                      dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 
    271               &                                + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 
    272                   END DO 
    273                   dta_bdy(ib_bdy)%v2d(ib) =  dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 
    274                   DO ik = 1, jpkm1 
    275                      dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib)  
    276                   END DO 
    277                END DO 
    278      
    279             ENDIF 
    280  
    281          END IF ! nn_dta(ib_bdy) = 1 
    282       END DO  ! ib_bdy 
     323                  dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + ssh_ib(ii,ij) 
     324               ENDDO 
     325            ENDIF 
     326         ENDDO 
     327      ENDIF 
    283328 
    284329      IF( nn_timing == 1 ) CALL timing_stop('bdy_dta') 
     
    326371      IF( nn_timing == 1 ) CALL timing_start('bdy_dta_init') 
    327372 
     373      IF(lwp) WRITE(numout,*) 
     374      IF(lwp) WRITE(numout,*) 'bdy_dta_ini : initialization of data at the open boundaries' 
     375      IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
     376      IF(lwp) WRITE(numout,*) '' 
     377 
    328378      ! Set nn_dta 
    329379      DO ib_bdy = 1, nb_bdy 
     
    357407         ENDIF 
    358408#endif                
     409         IF(lwp) WRITE(numout,*) 'Maximum number of files to open =',nb_bdy_fld(ib_bdy) 
    359410      ENDDO             
    360411 
     
    408459            ln_full_vel_array(ib_bdy) = ln_full_vel 
    409460 
    410             IF( ln_full_vel_array(ib_bdy) .and. lk_dynspg_ts )  THEN 
    411                CALL ctl_stop( 'bdy_dta_init: ERROR, cannot specify full velocities in boundary data',& 
    412             &                  'with dynspg_ts option' )   ;   RETURN   
    413             ENDIF              
    414  
    415461            nblen => idx_bdy(ib_bdy)%nblen 
    416462            nblenrim => idx_bdy(ib_bdy)%nblenrim 
     
    420466            IF( nn_dyn2d(ib_bdy) .gt. 0 .and. ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) ) THEN  
    421467 
    422                IF( nn_dyn2d(ib_bdy) .ne. jp_frs ) THEN 
     468               IF( nn_tra(ib_bdy) .ne. 4 ) THEN ! runoff condition : no ssh reading 
    423469                  jfld = jfld + 1 
    424470                  blf_i(jfld) = bn_ssh 
    425471                  ibdy(jfld) = ib_bdy 
    426472                  igrid(jfld) = 1 
    427                   ilen1(jfld) = nblenrim(igrid(jfld)) 
     473                  ilen1(jfld) = nblen(igrid(jfld)) 
    428474                  ilen3(jfld) = 1 
    429475               ENDIF 
    430476 
    431477               IF( .not. ln_full_vel_array(ib_bdy) ) THEN 
    432  
    433478                  jfld = jfld + 1 
    434479                  blf_i(jfld) = bn_u2d 
    435480                  ibdy(jfld) = ib_bdy 
    436481                  igrid(jfld) = 2 
    437                   IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 
    438                      ilen1(jfld) = nblen(igrid(jfld)) 
    439                   ELSE 
    440                      ilen1(jfld) = nblenrim(igrid(jfld)) 
    441                   ENDIF 
     482                  ilen1(jfld) = nblen(igrid(jfld)) 
    442483                  ilen3(jfld) = 1 
    443484 
     
    446487                  ibdy(jfld) = ib_bdy 
    447488                  igrid(jfld) = 3 
    448                   IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 
    449                      ilen1(jfld) = nblen(igrid(jfld)) 
    450                   ELSE 
    451                      ilen1(jfld) = nblenrim(igrid(jfld)) 
    452                   ENDIF 
     489                  ilen1(jfld) = nblen(igrid(jfld)) 
    453490                  ilen3(jfld) = 1 
    454  
    455491               ENDIF 
    456492 
     
    466502               ibdy(jfld) = ib_bdy 
    467503               igrid(jfld) = 2 
    468                IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 
    469                   ilen1(jfld) = nblen(igrid(jfld)) 
    470                ELSE 
    471                   ilen1(jfld) = nblenrim(igrid(jfld)) 
    472                ENDIF 
     504               ilen1(jfld) = nblen(igrid(jfld)) 
    473505               ilen3(jfld) = jpk 
    474506 
     
    477509               ibdy(jfld) = ib_bdy 
    478510               igrid(jfld) = 3 
    479                IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 
    480                   ilen1(jfld) = nblen(igrid(jfld)) 
    481                ELSE 
    482                   ilen1(jfld) = nblenrim(igrid(jfld)) 
    483                ENDIF 
     511               ilen1(jfld) = nblen(igrid(jfld)) 
    484512               ilen3(jfld) = jpk 
    485513 
     
    493521               ibdy(jfld) = ib_bdy 
    494522               igrid(jfld) = 1 
    495                IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 
    496                   ilen1(jfld) = nblen(igrid(jfld)) 
    497                ELSE 
    498                   ilen1(jfld) = nblenrim(igrid(jfld)) 
    499                ENDIF 
     523               ilen1(jfld) = nblen(igrid(jfld)) 
    500524               ilen3(jfld) = jpk 
    501525 
     
    504528               ibdy(jfld) = ib_bdy 
    505529               igrid(jfld) = 1 
    506                IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 
    507                   ilen1(jfld) = nblen(igrid(jfld)) 
    508                ELSE 
    509                   ilen1(jfld) = nblenrim(igrid(jfld)) 
    510                ENDIF 
     530               ilen1(jfld) = nblen(igrid(jfld)) 
    511531               ilen3(jfld) = jpk 
    512532 
     
    521541               ibdy(jfld) = ib_bdy 
    522542               igrid(jfld) = 1 
    523                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
    524                   ilen1(jfld) = nblen(igrid(jfld)) 
    525                ELSE 
    526                   ilen1(jfld) = nblenrim(igrid(jfld)) 
    527                ENDIF 
     543               ilen1(jfld) = nblen(igrid(jfld)) 
    528544               ilen3(jfld) = 1 
    529545 
     
    532548               ibdy(jfld) = ib_bdy 
    533549               igrid(jfld) = 1 
    534                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
    535                   ilen1(jfld) = nblen(igrid(jfld)) 
    536                ELSE 
    537                   ilen1(jfld) = nblenrim(igrid(jfld)) 
    538                ENDIF 
     550               ilen1(jfld) = nblen(igrid(jfld)) 
    539551               ilen3(jfld) = 1 
    540552 
     
    543555               ibdy(jfld) = ib_bdy 
    544556               igrid(jfld) = 1 
    545                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
    546                   ilen1(jfld) = nblen(igrid(jfld)) 
    547                ELSE 
    548                   ilen1(jfld) = nblenrim(igrid(jfld)) 
    549                ENDIF 
     557               ilen1(jfld) = nblen(igrid(jfld)) 
    550558               ilen3(jfld) = 1 
    551559 
     
    566574      ENDDO ! ib_bdy 
    567575 
    568  
    569576      DO jfld = 1, nb_bdy_fld_sum 
    570577         ALLOCATE( bf(jfld)%fnow(ilen1(jfld),1,ilen3(jfld)) ) 
     
    577584      jstart = 1 
    578585      DO ib_bdy = 1, nb_bdy 
    579          jend = jstart + nb_bdy_fld(ib_bdy) - 1 
     586         jend = nb_bdy_fld(ib_bdy)  
    580587         CALL fld_fill( bf(jstart:jend), blf_i(jstart:jend), cn_dir_array(ib_bdy), 'bdy_dta',   & 
    581588         &              'open boundary conditions', 'nambdy_dta' ) 
     
    596603         IF (nn_dyn2d(ib_bdy) .gt. 0) THEN 
    597604            IF( nn_dyn2d_dta(ib_bdy) .eq. 0 .or. nn_dyn2d_dta(ib_bdy) .eq. 2 .or. ln_full_vel_array(ib_bdy) ) THEN 
    598                IF( nn_dyn2d(ib_bdy) .eq. jp_frs ) THEN 
    599                   ilen0(1:3) = nblen(1:3) 
    600                ELSE 
    601                   ilen0(1:3) = nblenrim(1:3) 
    602                ENDIF 
    603                ALLOCATE( dta_bdy(ib_bdy)%ssh(ilen0(1)) ) 
     605               ilen0(1:3) = nblen(1:3) 
    604606               ALLOCATE( dta_bdy(ib_bdy)%u2d(ilen0(2)) ) 
    605607               ALLOCATE( dta_bdy(ib_bdy)%v2d(ilen0(3)) ) 
     608               IF (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3) THEN 
     609                  jfld = jfld + 1 
     610                  dta_bdy(ib_bdy)%ssh => bf(jfld)%fnow(:,1,1) 
     611               ELSE 
     612                  ALLOCATE( dta_bdy(ib_bdy)%ssh(nblen(1)) ) 
     613               ENDIF 
    606614            ELSE 
    607615               IF( nn_dyn2d(ib_bdy) .ne. jp_frs ) THEN 
     
    617625 
    618626         IF ( nn_dyn3d(ib_bdy) .gt. 0 .and. nn_dyn3d_dta(ib_bdy) .eq. 0 ) THEN 
    619             IF( nn_dyn3d(ib_bdy) .eq. jp_frs ) THEN 
    620                ilen0(1:3) = nblen(1:3) 
    621             ELSE 
    622                ilen0(1:3) = nblenrim(1:3) 
    623             ENDIF 
     627            ilen0(1:3) = nblen(1:3) 
    624628            ALLOCATE( dta_bdy(ib_bdy)%u3d(ilen0(2),jpk) ) 
    625629            ALLOCATE( dta_bdy(ib_bdy)%v3d(ilen0(3),jpk) ) 
     
    636640         IF (nn_tra(ib_bdy) .gt. 0) THEN 
    637641            IF( nn_tra_dta(ib_bdy) .eq. 0 ) THEN 
    638                IF( nn_tra(ib_bdy) .eq. jp_frs ) THEN 
    639                   ilen0(1:3) = nblen(1:3) 
    640                ELSE 
    641                   ilen0(1:3) = nblenrim(1:3) 
    642                ENDIF 
     642               ilen0(1:3) = nblen(1:3) 
    643643               ALLOCATE( dta_bdy(ib_bdy)%tem(ilen0(1),jpk) ) 
    644644               ALLOCATE( dta_bdy(ib_bdy)%sal(ilen0(1),jpk) ) 
     
    654654         IF (nn_ice_lim2(ib_bdy) .gt. 0) THEN 
    655655            IF( nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN 
    656                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
    657                   ilen0(1:3) = nblen(1:3) 
    658                ELSE 
    659                   ilen0(1:3) = nblenrim(1:3) 
    660                ENDIF 
     656               ilen0(1:3) = nblen(1:3) 
    661657               ALLOCATE( dta_bdy(ib_bdy)%frld(ilen0(1)) ) 
    662658               ALLOCATE( dta_bdy(ib_bdy)%hicif(ilen0(1)) ) 
Note: See TracChangeset for help on using the changeset viewer.