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 1694 – NEMO

Changeset 1694


Ignore:
Timestamp:
2009-10-30T17:06:23+01:00 (14 years ago)
Author:
smasson
Message:

avoid out of bounds access, see ticket:576

Location:
trunk/NEMO
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC_2/limdyn_2.F90

    r1470 r1694  
    158158         ! frictional velocity at T-point 
    159159         DO jj = 2, jpjm1 
    160             DO ji = 2, jpim1   ! NO vector opt. 
     160            DO ji = 2, jpim1   ! NO vector opt. because of zu_io 
    161161               ust2s(ji,jj) = 0.5 * cw                                                          & 
    162162                  &         * (  zu_io(ji,jj) * zu_io(ji,jj) + zu_io(ji-1,jj) * zu_io(ji-1,jj)   & 
  • trunk/NEMO/LIM_SRC_2/limmsh_2.F90

    r1156 r1694  
    157157 
    158158      DO jj = 2, jpj 
    159          DO ji = 2, jpi 
     159         DO ji = 2, jpi   ! NO vector opt. 
    160160            zh1p  =  e1t(ji  ,jj  ) * wght(ji,jj,2,2)   & 
    161161               &   + e1t(ji-1,jj  ) * wght(ji,jj,1,2)   & 
     
    234234      tmu(1,:) = 0.e0 
    235235      DO jj = 2, jpj               ! ice U.V-point: computed from ice T-point mask 
    236          DO ji = 2, jpim1 
     236         DO ji = 2, jpim1   ! NO vector opt. 
    237237            tmu(ji,jj) =  tms(ji,jj) * tms(ji-1,jj) * tms(ji,jj-1) * tms(ji-1,jj-1)             
    238238         END DO 
  • trunk/NEMO/LIM_SRC_2/limsbc_2.F90

    r1550 r1694  
    258258 
    259259         DO jj = 2, jpjm1 
    260             DO ji = 2, jpim1 
     260            DO ji = 2, jpim1   ! NO vector opt. 
    261261               ! ... ice-cover wheighted ice-ocean stress at U and V-points  (from I-point values) 
    262262               zutau  = 0.5 * ( ztio_u(ji+1,jj) + ztio_u(ji+1,jj+1) ) 
  • trunk/NEMO/LIM_SRC_2/limtrp_2.F90

    r1470 r1694  
    109109         zvbord = 1.0 + ( 1.0 - bound ) 
    110110         DO jj = 1, jpjm1 
    111             DO ji = 1, jpim1 
     111            DO ji = 1, jpim1   ! NO vector opt. 
    112112               zui_u(ji,jj) = ( u_ice(ji+1,jj  ) + u_ice(ji+1,jj+1) ) / ( MAX( tmu(ji+1,jj  ) + tmu(ji+1,jj+1), zvbord ) ) 
    113113               zvi_v(ji,jj) = ( v_ice(ji  ,jj+1) + v_ice(ji+1,jj+1) ) / ( MAX( tmu(ji  ,jj+1) + tmu(ji+1,jj+1), zvbord ) ) 
  • trunk/NEMO/LIM_SRC_2/limwri_dimg_2.h90

    r1470 r1694  
    9595    zcmo(:,:, 1:jpnoumax ) = 0.e0  
    9696    DO jj = 2 , jpjm1 
    97        DO ji = 2 , jpim1 
     97       DO ji = 2 , jpim1   ! NO vector opt. 
    9898          zindh  = MAX( zzero , SIGN( zone , hicif(ji,jj) * (1.0 - frld(ji,jj) ) - 0.10 ) ) 
    9999          zinda  = MAX( zzero , SIGN( zone , ( 1.0 - frld(ji,jj) ) - 0.10 ) ) 
     
    138138          !  case of instantaneaous output rcmoy(:,:, 1:jpnoumax ) = 0.e0 
    139139          DO jj = 2 , jpjm1 
    140              DO ji = 2 , jpim1 
     140             DO ji = 2 , jpim1   ! NO vector opt. 
    141141                zindh  = MAX( zzero , SIGN( zone , hicif(ji,jj) * (1.0 - frld(ji,jj) ) - 0.10 ) ) 
    142142                zinda  = MAX( zzero , SIGN( zone , ( 1.0 - frld(ji,jj) ) - 0.10 ) ) 
  • trunk/NEMO/LIM_SRC_3/limmsh.F90

    r1608 r1694  
    104104      tmv(:,:) = vmask(:,:,1)             ! ice V-point  : use surface vmask  (C-grid EVP) 
    105105      DO jj = 1, jpjm1                    ! ice F-point  : recompute fmask (due to nn_shlat) 
    106          DO ji = 1 , jpim1 
     106         DO ji = 1 , jpim1   ! NO vector opt. 
    107107            tmf(ji,jj) =  tms(ji,jj) * tms(ji+1,jj) * tms(ji,jj+1) * tms(ji+1,jj+1) 
    108108         END DO 
  • trunk/NEMO/LIM_SRC_3/limwri_dimg.h90

    r1469 r1694  
    9393   zcmo(:,:, 1:jpnoumax ) = 0.e0  
    9494   DO jj = 2 , jpjm1 
    95       DO ji = 2 , jpim1 
     95      DO ji = 2 , jpim1   ! NO vector opt. 
    9696         zindh  = MAX( zzero , SIGN( zone , ht_i(ji,jj,1) * (1.0 - frld(ji,jj) ) - 0.10 ) ) 
    9797         zinda  = MAX( zzero , SIGN( zone , ( 1.0 - frld(ji,jj) ) - 0.10 ) ) 
     
    136136         !  case of instantaneaous output rcmoy(:,:, 1:jpnoumax ) = 0.e0 
    137137         DO jj = 2 , jpjm1 
    138             DO ji = 2 , jpim1 
     138            DO ji = 2 , jpim1   ! NO vector opt. 
    139139               zindh  = MAX( zzero , SIGN( zone , ht_i(ji,jj,1) * (1.0 - frld(ji,jj) ) - 0.10 ) ) 
    140140               zinda  = MAX( zzero , SIGN( zone , ( 1.0 - frld(ji,jj) ) - 0.10 ) ) 
  • trunk/NEMO/OPA_SRC/DOM/dommsk.F90

    r1601 r1694  
    213213               vmask(ji,jj,jk) = tmask(ji,jj  ,jk) * tmask(ji  ,jj+1,jk) 
    214214            END DO 
    215             DO ji = 1, jpim1  
     215            DO ji = 1, jpim1      ! NO vector opt. 
    216216               fmask(ji,jj,jk) = tmask(ji,jj  ,jk) * tmask(ji+1,jj  ,jk)   & 
    217217                  &            * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 
  • trunk/NEMO/OPA_SRC/DOM/domvvl.F90

    r1566 r1694  
    117117 
    118118      DO jj = 1, jpjm1                          ! initialise before and now Sea Surface Height at u-, v-, f-points 
    119          DO ji = 1, jpim1 
     119         DO ji = 1, jpim1   ! NO vector opt. 
    120120            zcoefu = 0.5  * umask(ji,jj,1) / ( e1u(ji,jj) * e2u(ji,jj) ) 
    121121            zcoefv = 0.5  * vmask(ji,jj,1) / ( e1v(ji,jj) * e2v(ji,jj) ) 
  • trunk/NEMO/OPA_SRC/DOM/domzgr.F90

    r1639 r1694  
    12531253      hbatf(:,:) = rn_sbot_min 
    12541254      DO jj = 1, jpjm1 
    1255         DO ji = 1, jpim1 
     1255        DO ji = 1, jpim1   ! NO vector opt. 
    12561256           hbatu(ji,jj) = 0.5 * ( hbatt(ji  ,jj) + hbatt(ji+1,jj  ) ) 
    12571257           hbatv(ji,jj) = 0.5 * ( hbatt(ji  ,jj) + hbatt(ji  ,jj+1) ) 
  • trunk/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r1662 r1694  
    131131            ftne(1,:) = 0.e0   ;   ftnw(1,:) = 0.e0   ;   ftse(1,:) = 0.e0   ;   ftsw(1,:) = 0.e0 
    132132            DO jj = 2, jpj 
    133                DO ji = fs_2, jpi   ! vector opt. 
     133               DO ji = 2, jpi   ! NO vector opt. 
    134134                  ftne(ji,jj) = ( ff(ji-1,jj  ) + ff(ji  ,jj  ) + ff(ji  ,jj-1) ) / 3. 
    135135                  ftnw(ji,jj) = ( ff(ji-1,jj-1) + ff(ji-1,jj  ) + ff(ji  ,jj  ) ) / 3. 
  • trunk/NEMO/OPA_SRC/DYN/dynvor.F90

    r1601 r1694  
    614614         END DO 
    615615         DO jj = 3, jpj 
    616             DO ji = fs_2, jpi   ! vector opt. 
     616            DO ji = fs_2, jpi   ! vector opt. ok because we start at jj = 3 
    617617               ztne(ji,jj) = zwz(ji-1,jj  ) + zwz(ji  ,jj  ) + zwz(ji  ,jj-1) 
    618618               ztnw(ji,jj) = zwz(ji-1,jj-1) + zwz(ji-1,jj  ) + zwz(ji  ,jj  ) 
  • trunk/NEMO/OPA_SRC/DYN/sshwzv.F90

    r1607 r1694  
    166166      IF( lk_vvl ) THEN                                ! (required only in key_vvl case) 
    167167         DO jj = 1, jpjm1 
    168             DO ji = 1, fs_jpim1   ! Vector Opt. 
     168            DO ji = 1, jpim1      ! NO Vector Opt. 
    169169               sshu_a(ji,jj) = 0.5  * umask(ji,jj,1) / ( e1u(ji  ,jj) * e2u(ji  ,jj) )                   & 
    170170                  &                                  * ( e1t(ji  ,jj) * e2t(ji  ,jj) * ssha(ji  ,jj)     & 
  • trunk/NEMO/OPA_SRC/FLO/flodom.F90

    r1581 r1694  
    104104# if   defined key_mpp_mpi   ||   defined key_mpp_shmem 
    105105               DO ji = MAX(nldi,2), nlei 
    106                   DO jj = MAX(nldj,2), nlej 
     106                  DO jj = MAX(nldj,2), nlej   ! NO vector opt. 
    107107# else 
    108108               DO ji = 2, jpi 
    109                   DO jj = 2, jpj 
     109                  DO jj = 2, jpj   ! NO vector opt. 
    110110# endif                      
    111111                     ! For each float we find the indexes of the mesh                       
     
    235235# if   defined key_mpp_mpi   ||   defined key_mpp_shmem 
    236236            DO ji = MAX(nldi,2), nlei 
    237                DO jj = MAX(nldj,2), nlej 
     237               DO jj = MAX(nldj,2), nlej   ! NO vector opt. 
    238238# else 
    239239            DO ji = 2, jpi 
    240                DO jj = 2, jpj 
     240               DO jj = 2, jpj   ! NO vector opt. 
    241241# endif                   
    242242                  ! for each float we find the indexes of the mesh  
  • trunk/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90

    r1581 r1694  
    259259      icof(:,:) = icof(:,:) * tmask(:,:,1) 
    260260      DO jj = 1, jpjm1 
    261          DO ji = 1, jpim1 
     261         DO ji = 1, jpim1   ! NO vector opt. 
    262262            zmsk = tmask(ji,jj+1,1) + tmask(ji+1,jj+1,1) + tmask(ji,jj,1) + tmask(ji,jj+1,1) 
    263263            IF( zmsk == 0. ) THEN 
  • trunk/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90

    r1581 r1694  
    350350      icof(:,:) = icof(:,:) * tmask(:,:,1) 
    351351      DO jj = 1, jpjm1 
    352          DO ji = 1, jpim1 
     352         DO ji = 1, jpim1   ! NO vector opt. 
    353353            zmsk = tmask(ji,jj+1,1) + tmask(ji+1,jj+1,1) + tmask(ji,jj,1) + tmask(ji,jj+1,1) 
    354354            IF( zmsk == 0. ) THEN 
  • trunk/NEMO/OPA_SRC/SBC/sbccpl.F90

    r1693 r1694  
    796796            CASE( 'U' ) 
    797797               DO jj = 2, jpjm1                                   ! (U,V) ==> I 
    798                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     798                  DO ji = 2, jpim1   ! NO vector opt. 
    799799                     p_taui(ji,jj) = 0.5 * ( frcv(ji-1,jj  ,jpr_itx1) + frcv(ji-1,jj-1,jpr_itx1) ) 
    800800                     p_tauj(ji,jj) = 0.5 * ( frcv(ji  ,jj-1,jpr_ity1) + frcv(ji-1,jj-1,jpr_ity1) ) 
     
    803803            CASE( 'F' ) 
    804804               DO jj = 2, jpjm1                                   ! F ==> I 
    805                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     805                  DO ji = 2, jpim1   ! NO vector opt. 
    806806                     p_taui(ji,jj) = frcv(ji-1,jj-1,jpr_itx1)  
    807807                     p_tauj(ji,jj) = frcv(ji-1,jj-1,jpr_ity1)   
     
    810810            CASE( 'T' ) 
    811811               DO jj = 2, jpjm1                                   ! T ==> I 
    812                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     812                  DO ji = 2, jpim1   ! NO vector opt. 
    813813                     p_taui(ji,jj) = 0.25 * ( frcv(ji,jj  ,jpr_itx1) + frcv(ji-1,jj  ,jpr_itx1)   & 
    814814                        &                   + frcv(ji,jj-1,jpr_itx1) + frcv(ji-1,jj-1,jpr_itx1) )  
     
    836836            CASE( 'I' ) 
    837837               DO jj = 2, jpjm1                                   ! I ==> F 
    838                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     838                  DO ji = 2, jpim1   ! NO vector opt. 
    839839                     p_taui(ji,jj) = frcv(ji+1,jj+1,jpr_itx1)  
    840840                     p_tauj(ji,jj) = frcv(ji+1,jj+1,jpr_ity1)   
     
    843843            CASE( 'T' ) 
    844844               DO jj = 2, jpjm1                                   ! T ==> F 
    845                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     845                  DO ji = 2, jpim1   ! NO vector opt. 
    846846                     p_taui(ji,jj) = 0.25 * ( frcv(ji,jj  ,jpr_itx1) + frcv(ji+1,jj  ,jpr_itx1)   & 
    847847                        &                   + frcv(ji,jj+1,jpr_itx1) + frcv(ji+1,jj+1,jpr_itx1) )  
     
    879879            CASE( 'I' ) 
    880880               DO jj = 2, jpjm1                                   ! I ==> (U,V) 
    881                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     881                  DO ji = 2, jpim1   ! NO vector opt. 
    882882                     p_taui(ji,jj) = 0.5 * ( frcv(ji+1,jj+1,jpr_itx1) + frcv(ji+1,jj  ,jpr_itx1) ) 
    883883                     p_tauj(ji,jj) = 0.5 * ( frcv(ji+1,jj+1,jpr_ity1) + frcv(ji  ,jj+1,jpr_ity1) ) 
     
    11341134         !     
    11351135         !                                                  j+1   j     -----V---F 
    1136          ! surfacz velocity always sent from T point                     !       | 
     1136         ! surface velocity always sent from T point                     !       | 
    11371137         !                                                        j      |   T   U 
    11381138         !                                                               |       | 
     
    11621162            CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T 
    11631163               DO jj = 2, jpjm1 
    1164                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     1164                  DO ji = 2, jpim1   ! NO vector opt. 
    11651165                     zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   
    11661166                     zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)   
     
    11731173            CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T 
    11741174               DO jj = 2, jpjm1 
    1175                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     1175                  DO ji = 2, jpim1   ! NO vector opt. 
    11761176                     zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   
    11771177                     zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)   
     
    11971197            CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T 
    11981198               DO jj = 2, jpjm1 
    1199                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     1199                  DO ji = 2, jpim1   ! NO vector opt. 
    12001200                     zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   &    
    12011201                        &         + 0.25 * ( u_ice(ji+1,jj+1) + u_ice(ji,jj+1)                     & 
     
    12081208            CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T 
    12091209               DO jj = 2, jpjm1 
    1210                   DO ji = fs_2, fs_jpim1   ! vector opt. 
     1210                  DO ji = 2, jpim1   ! NO vector opt. 
    12111211                     zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   &    
    12121212                        &         + 0.25 * ( u_ice(ji-1,jj-1) + u_ice(ji,jj-1)                     & 
Note: See TracChangeset for help on using the changeset viewer.