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 5737 for branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN – NEMO

Ignore:
Timestamp:
2015-09-13T09:42:41+02:00 (9 years ago)
Author:
gm
Message:

#1593: LDF-ADV, step I: Phasing of horizontal scale factors correct 2

Location:
branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90

    r5516 r5737  
    121121                  (  e2u(ji,jj)*fse3u(ji,jj,jk) * un(ji,jj,jk) - e2u(ji-1,jj  )*fse3u(ji-1,jj  ,jk) * un(ji-1,jj  ,jk)       & 
    122122                   + e1v(ji,jj)*fse3v(ji,jj,jk) * vn(ji,jj,jk) - e1v(ji  ,jj-1)*fse3v(ji  ,jj-1,jk) * vn(ji  ,jj-1,jk)  )    & 
    123                   / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     123                  / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    124124            END DO 
    125125         END DO 
     
    195195            DO ji = 1, fs_jpim1   ! vector opt. 
    196196               rotn(ji,jj,jk) = (  zwv(ji+1,jj  ) - zwv(ji,jj)      & 
    197                   &              - zwu(ji  ,jj+1) + zwu(ji,jj)  ) * fmask(ji,jj,jk) / ( e1f(ji,jj)*e2f(ji,jj) ) 
     197                  &              - zwu(ji  ,jj+1) + zwu(ji,jj)  ) * fmask(ji,jj,jk) * r1_e1e2f(ji,jj) 
    198198            END DO 
    199199         END DO 
     
    203203            ii = nicoa(jl,1,jk) 
    204204            ij = njcoa(jl,1,jk) 
    205             rotn(ii,ij,jk) = 1. / ( e1f(ii,ij) * e2f(ii,ij) )   & 
    206                            * ( + 4. * zwv(ii+1,ij) - zwv(ii+2,ij) + 0.2 * zwv(ii+3,ij) ) 
     205            rotn(ii,ij,jk) = r1_e1e2f(ji,jj) * ( + 4. * zwv(ii+1,ij) - zwv(ii+2,ij) + 0.2 * zwv(ii+3,ij) ) 
    207206         END DO 
    208207         DO jl = 1, npcoa(2,jk) 
    209208            ii = nicoa(jl,2,jk) 
    210209            ij = njcoa(jl,2,jk) 
    211             rotn(ii,ij,jk) = 1./(e1f(ii,ij)*e2f(ii,ij))   & 
    212                *(-4.*zwv(ii,ij)+zwv(ii-1,ij)-0.2*zwv(ii-2,ij)) 
     210            rotn(ii,ij,jk) = r1_e1e2f(ji,jj) * (-4.*zwv(ii,ij)+zwv(ii-1,ij)-0.2*zwv(ii-2,ij)) 
    213211         END DO 
    214212         DO jl = 1, npcoa(3,jk) 
    215213            ii = nicoa(jl,3,jk) 
    216214            ij = njcoa(jl,3,jk) 
    217             rotn(ii,ij,jk) = -1. / ( e1f(ii,ij)*e2f(ii,ij) )   & 
    218                * ( +4. * zwu(ii,ij+1) - zwu(ii,ij+2) + 0.2 * zwu(ii,ij+3) ) 
     215            rotn(ii,ij,jk) = -r1_e1e2f(ji,jj) * ( +4. * zwu(ii,ij+1) - zwu(ii,ij+2) + 0.2 * zwu(ii,ij+3) ) 
    219216         END DO 
    220217         DO jl = 1, npcoa(4,jk) 
    221218            ii = nicoa(jl,4,jk) 
    222219            ij = njcoa(jl,4,jk) 
    223             rotn(ii,ij,jk) = -1. / ( e1f(ii,ij)*e2f(ii,ij) )   & 
    224                * ( -4. * zwu(ii,ij) + zwu(ii,ij-1) - 0.2 * zwu(ii,ij-2) ) 
     220            rotn(ii,ij,jk) = -r1_e1e2f(ji,jj) * ( -4. * zwu(ii,ij) + zwu(ii,ij-1) - 0.2 * zwu(ii,ij-2) ) 
    225221         END DO 
    226222         !                                             ! =============== 
     
    302298                  (  e2u(ji,jj)*fse3u(ji,jj,jk) * un(ji,jj,jk) - e2u(ji-1,jj)*fse3u(ji-1,jj,jk) * un(ji-1,jj,jk)       & 
    303299                   + e1v(ji,jj)*fse3v(ji,jj,jk) * vn(ji,jj,jk) - e1v(ji,jj-1)*fse3v(ji,jj-1,jk) * vn(ji,jj-1,jk)  )    & 
    304                   / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     300                  / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    305301            END DO   
    306302         END DO   
     
    320316               rotn(ji,jj,jk) = (  e2v(ji+1,jj  ) * vn(ji+1,jj  ,jk) - e2v(ji,jj) * vn(ji,jj,jk)    & 
    321317                  &              - e1u(ji  ,jj+1) * un(ji  ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk)  ) & 
    322                   &           * fmask(ji,jj,jk) / ( e1f(ji,jj) * e2f(ji,jj) ) 
     318                  &           * fmask(ji,jj,jk) * r1_e1e2f(ji,jj) 
    323319            END DO 
    324320         END DO 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90

    r4990 r5737  
    9090         DO jj = 2, jpjm1                          ! divergence of horizontal momentum fluxes 
    9191            DO ji = fs_2, fs_jpim1   ! vector opt. 
    92                zbu = e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    93                zbv = e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
     92               zbu = e1e2u(ji,jj) * fse3u(ji,jj,jk) 
     93               zbv = e1e2v(ji,jj) * fse3v(ji,jj,jk) 
    9494               ! 
    9595               ua(ji,jj,jk) = ua(ji,jj,jk) - (  zfu_t(ji+1,jj  ,jk) - zfu_t(ji  ,jj  ,jk)    & 
     
    114114      DO jk = 1, jpkm1                       ! ==================== ! 
    115115         !                                         ! Vertical volume fluxesÊ 
    116          zfw(:,:,jk) = 0.25 * e1t(:,:) * e2t(:,:) * wn(:,:,jk) 
     116         zfw(:,:,jk) = 0.25 * e1e2t(:,:) * wn(:,:,jk) 
    117117         ! 
    118118         IF( jk == 1 ) THEN                        ! surface/bottom advective fluxes                    
     
    144144            DO ji = fs_2, fs_jpim1   ! vector opt. 
    145145               ua(ji,jj,jk) =  ua(ji,jj,jk) - ( zfu_uw(ji,jj,jk) - zfu_uw(ji,jj,jk+1) )    & 
    146                   &  / ( e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) ) 
     146                  &  / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 
    147147               va(ji,jj,jk) =  va(ji,jj,jk) - ( zfv_vw(ji,jj,jk) - zfv_vw(ji,jj,jk+1) )    & 
    148                   &  / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) ) 
     148                  &  / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    149149            END DO 
    150150         END DO 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90

    r5069 r5737  
    181181         DO jj = 2, jpjm1                          ! divergence of horizontal momentum fluxes 
    182182            DO ji = fs_2, fs_jpim1   ! vector opt. 
    183                zbu = e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    184                zbv = e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
     183               zbu = e1e2u(ji,jj) * fse3u(ji,jj,jk) 
     184               zbv = e1e2v(ji,jj) * fse3v(ji,jj,jk) 
    185185               ! 
    186186               ua(ji,jj,jk) = ua(ji,jj,jk) - (  zfu_t(ji+1,jj  ,jk) - zfu_t(ji  ,jj  ,jk)    & 
     
    203203      DO jk = 1, jpkm1                       ! ==================== ! 
    204204         !                                         ! Vertical volume fluxesÊ 
    205          zfw(:,:,jk) = 0.25 * e1t(:,:) * e2t(:,:) * wn(:,:,jk) 
     205         zfw(:,:,jk) = 0.25 * e1e2t(:,:) * wn(:,:,jk) 
    206206         ! 
    207207         IF( jk == 1 ) THEN                        ! surface/bottom advective fluxes                    
     
    233233            DO ji = fs_2, fs_jpim1   ! vector opt. 
    234234               ua(ji,jj,jk) =  ua(ji,jj,jk) - ( zfu_uw(ji,jj,jk) - zfu_uw(ji,jj,jk+1) )    & 
    235                   &  / ( e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) ) 
     235                  &  / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 
    236236               va(ji,jj,jk) =  va(ji,jj,jk) - ( zfv_vw(ji,jj,jk) - zfv_vw(ji,jj,jk+1) )    & 
    237                   &  / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) ) 
     237                  &  / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    238238            END DO 
    239239         END DO 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r5224 r5737  
    10461046      DO jj = 2, jpjm1 
    10471047        DO ji = 2, jpim1 
    1048           zsshu_n(ji,jj) = (e12u(ji,jj) * sshn(ji,jj) + e12u(ji+1, jj) * sshn(ji+1,jj)) * & 
    1049                          & r1_e12u(ji,jj) * umask(ji,jj,1) * 0.5_wp  
    1050           zsshv_n(ji,jj) = (e12v(ji,jj) * sshn(ji,jj) + e12v(ji+1, jj) * sshn(ji,jj+1)) * & 
    1051                          & r1_e12v(ji,jj) * vmask(ji,jj,1) * 0.5_wp  
     1048          zsshu_n(ji,jj) = (e1e2u(ji,jj) * sshn(ji,jj) + e1e2u(ji+1, jj) * sshn(ji+1,jj)) * & 
     1049                         & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp  
     1050          zsshv_n(ji,jj) = (e1e2v(ji,jj) * sshn(ji,jj) + e1e2v(ji+1, jj) * sshn(ji,jj+1)) * & 
     1051                         & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp  
    10521052        END DO 
    10531053      END DO 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90

    r4990 r5737  
    113113               DO ji = fs_2, fs_jpim1   ! vector opt. 
    114114                  zlu(ji,jj,jk) = - ( zuf(ji,jj,jk) - zuf(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) )   & 
    115                      &         + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj,jk) ) / e1u(ji,jj) 
     115                     &         + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj,jk) ) * r1_e1u(ji,jj) 
    116116    
    117117                  zlv(ji,jj,jk) = + ( zuf(ji,jj,jk) - zuf(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) )   & 
    118                      &         + ( hdivb(ji,jj+1,jk) - hdivb(ji,jj,jk) ) / e2v(ji,jj) 
     118                     &         + ( hdivb(ji,jj+1,jk) - hdivb(ji,jj,jk) ) * r1_e2v(ji,jj) 
    119119               END DO 
    120120            END DO 
     
    122122            DO jj = 2, jpjm1 
    123123               DO ji = fs_2, fs_jpim1   ! vector opt. 
    124                   zlu(ji,jj,jk) = - ( rotb (ji  ,jj,jk) - rotb (ji,jj-1,jk) ) / e2u(ji,jj)   & 
    125                      &         + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj  ,jk) ) / e1u(ji,jj) 
    126     
    127                   zlv(ji,jj,jk) = + ( rotb (ji,jj  ,jk) - rotb (ji-1,jj,jk) ) / e1v(ji,jj)   & 
    128                      &         + ( hdivb(ji,jj+1,jk) - hdivb(ji  ,jj,jk) ) / e2v(ji,jj) 
     124                  zlu(ji,jj,jk) = - ( rotb (ji  ,jj,jk) - rotb (ji,jj-1,jk) ) * r1_e2u(ji,jj)   & 
     125                     &            + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj  ,jk) ) * r1_e1u(ji,jj) 
     126    
     127                  zlv(ji,jj,jk) = + ( rotb (ji,jj  ,jk) - rotb (ji-1,jj,jk) ) * r1_e1v(ji,jj)   & 
     128                     &            + ( hdivb(ji,jj+1,jk) - hdivb(ji  ,jj,jk) ) * r1_e2v(ji,jj) 
    129129               END DO   
    130130            END DO   
     
    152152            DO ji = 1, fs_jpim1   ! vector opt. 
    153153               zuf(ji,jj,jk) = fmask(ji,jj,jk) * (  zcv(ji+1,jj  ) - zcv(ji,jj)      & 
    154                   &                            - zcu(ji  ,jj+1) + zcu(ji,jj)  )   & 
    155                   &       * fse3f(ji,jj,jk) / ( e1f(ji,jj)*e2f(ji,jj) ) 
     154                  &                               - zcu(ji  ,jj+1) + zcu(ji,jj)  )   & 
     155                  &       * fse3f(ji,jj,jk) * r1_e1e2f(ji,jj) 
    156156            END DO   
    157157         END DO   
     
    168168         DO jj = 2, jpj 
    169169            DO ji = fs_2, jpi   ! vector opt. 
    170                zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
     170               zbt = e1e2t(ji,jj) * fse3t(ji,jj,jk) 
    171171               zut(ji,jj,jk) = (  zlu(ji,jj,jk) - zlu(ji-1,jj  ,jk)   & 
    172172                  &             + zlv(ji,jj,jk) - zlv(ji  ,jj-1,jk) ) / zbt 
     
    192192               ! horizontal biharmonic diffusive trends 
    193193               zua = - ( zuf(ji  ,jj,jk) - zuf(ji,jj-1,jk) ) / ze2u   & 
    194                   &  + ( zut(ji+1,jj,jk) - zut(ji,jj  ,jk) ) / e1u(ji,jj) 
     194                  &  + ( zut(ji+1,jj,jk) - zut(ji,jj  ,jk) ) * r1_e1u(ji,jj) 
    195195 
    196196               zva = + ( zuf(ji,jj  ,jk) - zuf(ji-1,jj,jk) ) / ze2v   & 
    197                   &  + ( zut(ji,jj+1,jk) - zut(ji  ,jj,jk) ) / e2v(ji,jj) 
     197                  &  + ( zut(ji,jj+1,jk) - zut(ji  ,jj,jk) ) * r1_e2v(ji,jj) 
    198198               ! add it to the general momentum trends 
    199199               ua(ji,jj,jk) = ua(ji,jj,jk) + zua * ( fsahmu(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90

    r4990 r5737  
    8080               ! horizontal diffusive trends 
    8181               zua = - ( ze2u - rotb (ji,jj-1,jk)*fsahmf(ji,jj-1,jk)*fse3f(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) )   & 
    82                      + ( hdivb(ji+1,jj,jk)*fsahmt(ji+1,jj,jk) - ze1v                   ) / e1u(ji,jj) 
     82                     + ( hdivb(ji+1,jj,jk)*fsahmt(ji+1,jj,jk) - ze1v                   ) * r1_e1u(ji,jj) 
    8383 
    8484               zva = + ( ze2u - rotb (ji-1,jj,jk)*fsahmf(ji-1,jj,jk)*fse3f(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) )   & 
    85                      + ( hdivb(ji,jj+1,jk)*fsahmt(ji,jj+1,jk) - ze1v                   ) / e2v(ji,jj) 
     85                     + ( hdivb(ji,jj+1,jk)*fsahmt(ji,jj+1,jk) - ze1v                   ) * r1_e2v(ji,jj) 
    8686 
    8787               ! add it to the general momentum trends 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r5656 r5737  
    108108   END FUNCTION dyn_spg_ts_alloc 
    109109 
     110 
    110111   SUBROUTINE dyn_spg_ts( kt ) 
    111112      !!---------------------------------------------------------------------- 
     
    338339         DO jj = 2, jpjm1 
    339340            DO ji = fs_2, fs_jpim1   ! vector opt. 
    340                zy1 = ( zwy(ji,jj-1) + zwy(ji+1,jj-1) ) / e1u(ji,jj) 
    341                zy2 = ( zwy(ji,jj  ) + zwy(ji+1,jj  ) ) / e1u(ji,jj) 
    342                zx1 = ( zwx(ji-1,jj) + zwx(ji-1,jj+1) ) / e2v(ji,jj) 
    343                zx2 = ( zwx(ji  ,jj) + zwx(ji  ,jj+1) ) / e2v(ji,jj) 
     341               zy1 = ( zwy(ji,jj-1) + zwy(ji+1,jj-1) ) * r1_e1u(ji,jj) 
     342               zy2 = ( zwy(ji,jj  ) + zwy(ji+1,jj  ) ) * r1_e1u(ji,jj) 
     343               zx1 = ( zwx(ji-1,jj) + zwx(ji-1,jj+1) ) * r1_e2v(ji,jj) 
     344               zx2 = ( zwx(ji  ,jj) + zwx(ji  ,jj+1) ) * r1_e2v(ji,jj) 
    344345               ! energy conserving formulation for planetary vorticity term 
    345346               zu_trd(ji,jj) = z1_4 * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) 
     
    352353            DO ji = fs_2, fs_jpim1   ! vector opt. 
    353354               zy1 =   z1_8 * ( zwy(ji  ,jj-1) + zwy(ji+1,jj-1) & 
    354                  &            + zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) / e1u(ji,jj) 
     355                 &            + zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) * r1_e1u(ji,jj) 
    355356               zx1 = - z1_8 * ( zwx(ji-1,jj  ) + zwx(ji-1,jj+1) & 
    356                  &            + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) / e2v(ji,jj) 
     357                 &            + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) * r1_e2v(ji,jj) 
    357358               zu_trd(ji,jj)  = zy1 * ( zwz(ji  ,jj-1) + zwz(ji,jj) ) 
    358359               zv_trd(ji,jj)  = zx1 * ( zwz(ji-1,jj  ) + zwz(ji,jj) ) 
     
    363364         DO jj = 2, jpjm1 
    364365            DO ji = fs_2, fs_jpim1   ! vector opt. 
    365                zu_trd(ji,jj) = + z1_12 / e1u(ji,jj) * (  ftne(ji,jj  ) * zwy(ji  ,jj  ) & 
    366                 &                                      + ftnw(ji+1,jj) * zwy(ji+1,jj  ) & 
    367                 &                                      + ftse(ji,jj  ) * zwy(ji  ,jj-1) & 
    368                 &                                      + ftsw(ji+1,jj) * zwy(ji+1,jj-1) ) 
    369                zv_trd(ji,jj) = - z1_12 / e2v(ji,jj) * (  ftsw(ji,jj+1) * zwx(ji-1,jj+1) & 
    370                 &                                      + ftse(ji,jj+1) * zwx(ji  ,jj+1) & 
    371                 &                                      + ftnw(ji,jj  ) * zwx(ji-1,jj  ) & 
    372                 &                                      + ftne(ji,jj  ) * zwx(ji  ,jj  ) ) 
     366               zu_trd(ji,jj) = + z1_12 * r1_e1u(ji,jj) * (  ftne(ji,jj  ) * zwy(ji  ,jj  ) & 
     367                &                                         + ftnw(ji+1,jj) * zwy(ji+1,jj  ) & 
     368                &                                         + ftse(ji,jj  ) * zwy(ji  ,jj-1) & 
     369                &                                         + ftsw(ji+1,jj) * zwy(ji+1,jj-1) ) 
     370               zv_trd(ji,jj) = - z1_12 * r1_e2v(ji,jj) * (  ftsw(ji,jj+1) * zwx(ji-1,jj+1) & 
     371                &                                         + ftse(ji,jj+1) * zwx(ji  ,jj+1) & 
     372                &                                         + ftnw(ji,jj  ) * zwx(ji-1,jj  ) & 
     373                &                                         + ftne(ji,jj  ) * zwx(ji  ,jj  ) ) 
    373374            END DO 
    374375         END DO 
     
    381382         DO jj = 2, jpjm1  
    382383            DO ji = fs_2, fs_jpim1   ! vector opt. 
    383                zu_trd(ji,jj) = zu_trd(ji,jj) - grav * (  sshn(ji+1,jj  ) - sshn(ji  ,jj  )  ) / e1u(ji,jj) 
    384                zv_trd(ji,jj) = zv_trd(ji,jj) - grav * (  sshn(ji  ,jj+1) - sshn(ji  ,jj  )  ) / e2v(ji,jj) 
     384               zu_trd(ji,jj) = zu_trd(ji,jj) - grav * (  sshn(ji+1,jj  ) - sshn(ji  ,jj  )  ) * r1_e1u(ji,jj) 
     385               zv_trd(ji,jj) = zv_trd(ji,jj) - grav * (  sshn(ji  ,jj+1) - sshn(ji  ,jj  )  ) * r1_e2v(ji,jj) 
    385386            END DO 
    386387         END DO 
     
    431432            DO jj = 2, jpjm1               
    432433               DO ji = fs_2, fs_jpim1   ! vector opt. 
    433                   zu_spg =  grav * (  ssh_ib (ji+1,jj  ) - ssh_ib (ji,jj) ) /e1u(ji,jj) 
    434                   zv_spg =  grav * (  ssh_ib (ji  ,jj+1) - ssh_ib (ji,jj) ) /e2v(ji,jj) 
     434                  zu_spg =  grav * (  ssh_ib (ji+1,jj  ) - ssh_ib (ji,jj) ) * r1_e1u(ji,jj) 
     435                  zv_spg =  grav * (  ssh_ib (ji  ,jj+1) - ssh_ib (ji,jj) ) * r1_e2v(ji,jj) 
    435436                  zu_frc(ji,jj) = zu_frc(ji,jj) + zu_spg 
    436437                  zv_frc(ji,jj) = zv_frc(ji,jj) + zv_spg 
     
    441442               DO ji = fs_2, fs_jpim1   ! vector opt. 
    442443                  zu_spg =  grav * z1_2 * (  ssh_ib (ji+1,jj  ) - ssh_ib (ji,jj)    & 
    443                       &                    + ssh_ibb(ji+1,jj  ) - ssh_ibb(ji,jj)  ) /e1u(ji,jj) 
     444                      &                    + ssh_ibb(ji+1,jj  ) - ssh_ibb(ji,jj)  ) * r1_e1u(ji,jj) 
    444445                  zv_spg =  grav * z1_2 * (  ssh_ib (ji  ,jj+1) - ssh_ib (ji,jj)    & 
    445                       &                    + ssh_ibb(ji  ,jj+1) - ssh_ibb(ji,jj)  ) /e2v(ji,jj) 
     446                      &                    + ssh_ibb(ji  ,jj+1) - ssh_ibb(ji,jj)  ) * r1_e2v(ji,jj) 
    446447                  zu_frc(ji,jj) = zu_frc(ji,jj) + zu_spg 
    447448                  zv_frc(ji,jj) = zv_frc(ji,jj) + zv_spg 
     
    549550            DO jj = 2, jpjm1                                    ! Sea Surface Height at u- & v-points 
    550551               DO ji = 2, fs_jpim1   ! Vector opt. 
    551                   zwx(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e12u(ji,jj)     & 
    552                      &              * ( e12t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
    553                      &              +   e12t(ji+1,jj) * zsshp2_e(ji+1,jj) ) 
    554                   zwy(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e12v(ji,jj)     & 
    555                      &              * ( e12t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
    556                      &              +   e12t(ji,jj+1) * zsshp2_e(ji,jj+1) ) 
     552                  zwx(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e1e2u(ji,jj)     & 
     553                     &              * ( e1e2t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
     554                     &              +   e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj) ) 
     555                  zwy(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e1e2v(ji,jj)     & 
     556                     &              * ( e1e2t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
     557                     &              +   e1e2t(ji,jj+1) * zsshp2_e(ji,jj+1) ) 
    557558               END DO 
    558559            END DO 
     
    602603         ! Sum over sub-time-steps to compute advective velocities 
    603604         za2 = wgtbtp2(jn) 
    604          zu_sum  (:,:) = zu_sum  (:,:) + za2 * zwx  (:,:) / e2u  (:,:) 
    605          zv_sum  (:,:) = zv_sum  (:,:) + za2 * zwy  (:,:) / e1v  (:,:) 
     605         zu_sum(:,:) = zu_sum(:,:) + za2 * zwx(:,:) * r1_e2u(:,:) 
     606         zv_sum(:,:) = zv_sum(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 
    606607         ! 
    607608         ! Set next sea level: 
     
    609610            DO ji = fs_2, fs_jpim1   ! vector opt. 
    610611               zhdiv(ji,jj) = (   zwx(ji,jj) - zwx(ji-1,jj)   & 
    611                   &             + zwy(ji,jj) - zwy(ji,jj-1)   ) * r1_e12t(ji,jj) 
     612                  &             + zwy(ji,jj) - zwy(ji,jj-1)   ) * r1_e1e2t(ji,jj) 
    612613            END DO 
    613614         END DO 
     
    627628            DO jj = 2, jpjm1 
    628629               DO ji = 2, jpim1      ! NO Vector Opt. 
    629                   zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e12u(ji,jj)  & 
    630                      &              * ( e12t(ji  ,jj  ) * ssha_e(ji  ,jj  ) & 
    631                      &              +   e12t(ji+1,jj  ) * ssha_e(ji+1,jj  ) ) 
    632                   zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e12v(ji,jj)  & 
    633                      &              * ( e12t(ji  ,jj  ) * ssha_e(ji  ,jj  ) & 
    634                      &              +   e12t(ji  ,jj+1) * ssha_e(ji  ,jj+1) ) 
     630                  zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e1e2u(ji,jj)  & 
     631                     &              * ( e1e2t(ji  ,jj  ) * ssha_e(ji  ,jj  ) & 
     632                     &              +   e1e2t(ji+1,jj  ) * ssha_e(ji+1,jj  ) ) 
     633                  zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e1e2v(ji,jj)  & 
     634                     &              * ( e1e2t(ji  ,jj  ) * ssha_e(ji  ,jj  ) & 
     635                     &              +   e1e2t(ji  ,jj+1) * ssha_e(ji  ,jj+1) ) 
    635636               END DO 
    636637            END DO 
     
    666667            DO jj = 2, jpjm1                             
    667668               DO ji = 2, jpim1 
    668                   zx1 = z1_2 * umask(ji  ,jj,1) *  r1_e12u(ji  ,jj)    & 
    669                      &      * ( e12t(ji  ,jj  ) * zsshp2_e(ji  ,jj)    & 
    670                      &      +   e12t(ji+1,jj  ) * zsshp2_e(ji+1,jj  ) ) 
    671                   zy1 = z1_2 * vmask(ji  ,jj,1) *  r1_e12v(ji  ,jj  )  & 
    672                      &       * ( e12t(ji ,jj  ) * zsshp2_e(ji  ,jj  )  & 
    673                      &       +   e12t(ji ,jj+1) * zsshp2_e(ji  ,jj+1) ) 
     669                  zx1 = z1_2 * umask(ji  ,jj,1) *  r1_e1e2u(ji  ,jj)    & 
     670                     &      * ( e1e2t(ji  ,jj  ) * zsshp2_e(ji  ,jj)    & 
     671                     &      +   e1e2t(ji+1,jj  ) * zsshp2_e(ji+1,jj  ) ) 
     672                  zy1 = z1_2 * vmask(ji  ,jj,1) *  r1_e1e2v(ji  ,jj  )  & 
     673                     &       * ( e1e2t(ji ,jj  ) * zsshp2_e(ji  ,jj  )  & 
     674                     &       +   e1e2t(ji ,jj+1) * zsshp2_e(ji  ,jj+1) ) 
    674675                  zhust_e(ji,jj) = hu_0(ji,jj) + zx1  
    675676                  zhvst_e(ji,jj) = hv_0(ji,jj) + zy1 
     
    688689            DO jj = 2, jpjm1 
    689690               DO ji = fs_2, fs_jpim1   ! vector opt. 
    690                   zy1 = ( zwy(ji  ,jj-1) + zwy(ji+1,jj-1) ) / e1u(ji,jj) 
    691                   zy2 = ( zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) / e1u(ji,jj) 
    692                   zx1 = ( zwx(ji-1,jj  ) + zwx(ji-1,jj+1) ) / e2v(ji,jj) 
    693                   zx2 = ( zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) / e2v(ji,jj) 
     691                  zy1 = ( zwy(ji  ,jj-1) + zwy(ji+1,jj-1) ) * r1_e1u(ji,jj) 
     692                  zy2 = ( zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) * r1_e1u(ji,jj) 
     693                  zx1 = ( zwx(ji-1,jj  ) + zwx(ji-1,jj+1) ) * r1_e2v(ji,jj) 
     694                  zx2 = ( zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) * r1_e2v(ji,jj) 
    694695                  zu_trd(ji,jj) = z1_4 * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) 
    695696                  zv_trd(ji,jj) =-z1_4 * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 ) 
     
    701702               DO ji = fs_2, fs_jpim1   ! vector opt. 
    702703                  zy1 =   z1_8 * ( zwy(ji  ,jj-1) + zwy(ji+1,jj-1) & 
    703                    &             + zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) / e1u(ji,jj) 
     704                   &             + zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) * r1_e1u(ji,jj) 
    704705                  zx1 = - z1_8 * ( zwx(ji-1,jj  ) + zwx(ji-1,jj+1) & 
    705                    &             + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) / e2v(ji,jj) 
     706                   &             + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) * r1_e2v(ji,jj) 
    706707                  zu_trd(ji,jj)  = zy1 * ( zwz(ji  ,jj-1) + zwz(ji,jj) ) 
    707708                  zv_trd(ji,jj)  = zx1 * ( zwz(ji-1,jj  ) + zwz(ji,jj) ) 
     
    712713            DO jj = 2, jpjm1 
    713714               DO ji = fs_2, fs_jpim1   ! vector opt. 
    714                   zu_trd(ji,jj) = + z1_12 / e1u(ji,jj) * (  ftne(ji,jj  ) * zwy(ji  ,jj  ) & 
    715                      &                                    + ftnw(ji+1,jj) * zwy(ji+1,jj  ) & 
    716                      &                                    + ftse(ji,jj  ) * zwy(ji  ,jj-1) &  
    717                      &                                    + ftsw(ji+1,jj) * zwy(ji+1,jj-1) ) 
    718                   zv_trd(ji,jj) = - z1_12 / e2v(ji,jj) * (  ftsw(ji,jj+1) * zwx(ji-1,jj+1) &  
    719                      &                                    + ftse(ji,jj+1) * zwx(ji  ,jj+1) & 
    720                      &                                    + ftnw(ji,jj  ) * zwx(ji-1,jj  ) &  
    721                      &                                    + ftne(ji,jj  ) * zwx(ji  ,jj  ) ) 
     715                  zu_trd(ji,jj) = + z1_12 * r1_e1u(ji,jj) * (  ftne(ji,jj  ) * zwy(ji  ,jj  ) & 
     716                     &                                       + ftnw(ji+1,jj) * zwy(ji+1,jj  ) & 
     717                     &                                       + ftse(ji,jj  ) * zwy(ji  ,jj-1) &  
     718                     &                                       + ftsw(ji+1,jj) * zwy(ji+1,jj-1) ) 
     719                  zv_trd(ji,jj) = - z1_12 * r1_e2v(ji,jj) * (  ftsw(ji,jj+1) * zwx(ji-1,jj+1) &  
     720                     &                                       + ftse(ji,jj+1) * zwx(ji  ,jj+1) & 
     721                     &                                       + ftnw(ji,jj  ) * zwx(ji-1,jj  ) &  
     722                     &                                       + ftne(ji,jj  ) * zwx(ji  ,jj  ) ) 
    722723               END DO 
    723724            END DO 
     
    729730            DO jj = 2, jpjm1 
    730731               DO ji = fs_2, fs_jpim1   ! vector opt. 
    731                   zu_spg = grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) / e1u(ji,jj) 
    732                   zv_spg = grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) / e2v(ji,jj) 
     732                  zu_spg = grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) * r1_e1u(ji,jj) 
     733                  zv_spg = grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) * r1_e2v(ji,jj) 
    733734                  zu_trd(ji,jj) = zu_trd(ji,jj) + zu_spg 
    734735                  zv_trd(ji,jj) = zv_trd(ji,jj) + zv_spg 
     
    745746            DO ji = fs_2, fs_jpim1   ! vector opt. 
    746747               ! Add surface pressure gradient 
    747                zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) / e1u(ji,jj) 
    748                zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) / e2v(ji,jj) 
     748               zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 
     749               zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 
    749750               zwx(ji,jj) = zu_spg 
    750751               zwy(ji,jj) = zv_spg 
     
    850851         DO jj = 1, jpjm1 
    851852            DO ji = 1, jpim1      ! NO Vector Opt. 
    852                zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e12u(ji,jj) & 
    853                   &              * ( e12t(ji  ,jj) * ssha(ji  ,jj)    & 
    854                   &              +   e12t(ji+1,jj) * ssha(ji+1,jj) ) 
    855                zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e12v(ji,jj) & 
    856                   &              * ( e12t(ji,jj  ) * ssha(ji,jj  )    & 
    857                   &              +   e12t(ji,jj+1) * ssha(ji,jj+1) ) 
     853               zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e1e2u(ji,jj) & 
     854                  &              * ( e1e2t(ji  ,jj) * ssha(ji  ,jj)    & 
     855                  &              +   e1e2t(ji+1,jj) * ssha(ji+1,jj) ) 
     856               zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e1e2v(ji,jj) & 
     857                  &              * ( e1e2t(ji,jj  ) * ssha(ji,jj  )    & 
     858                  &              +   e1e2t(ji,jj+1) * ssha(ji,jj+1) ) 
    858859            END DO 
    859860         END DO 
     
    10931094         DO jj = 1, jpj 
    10941095            DO ji =1, jpi 
    1095                zxr2 = 1./(e1t(ji,jj)*e1t(ji,jj)) 
    1096                zyr2 = 1./(e2t(ji,jj)*e2t(ji,jj)) 
    1097                zcu(ji,jj) = sqrt(grav*ht_0(ji,jj)*(zxr2 + zyr2) ) 
     1096               zxr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
     1097               zyr2 = r1_e2t(ji,jj) * r1_e2t(ji,jj) 
     1098               zcu(ji,jj) = SQRT( grav * ht_0(ji,jj) * (zxr2 + zyr2) ) 
    10981099            END DO 
    10991100         END DO 
     
    11011102         DO jj = 1, jpj 
    11021103            DO ji =1, jpi 
    1103                zxr2 = 1./(e1t(ji,jj)*e1t(ji,jj)) 
    1104                zyr2 = 1./(e2t(ji,jj)*e2t(ji,jj)) 
    1105                zcu(ji,jj) = sqrt(grav*ht(ji,jj)*(zxr2 + zyr2) ) 
    1106             END DO 
    1107          END DO 
    1108       ENDIF 
    1109  
    1110       zcmax = MAXVAL(zcu(:,:)) 
     1104               zxr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
     1105               zyr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
     1106               zcu(ji,jj) = SQRT( grav * ht(ji,jj) * (zxr2 + zyr2) ) 
     1107            END DO 
     1108         END DO 
     1109      ENDIF 
     1110 
     1111      zcmax = MAXVAL( zcu(:,:) ) 
    11111112      IF( lk_mpp )   CALL mpp_max( zcmax ) 
    11121113 
     
    11141115      IF (ln_bt_nn_auto) nn_baro = CEILING( rdt / rn_bt_cmax * zcmax) 
    11151116       
    1116       rdtbt = rdt / FLOAT(nn_baro) 
     1117      rdtbt = rdt / REAL( nn_baro , wp ) 
    11171118      zcmax = zcmax * rdtbt 
    11181119                     ! Print results 
     
    11941195   !!====================================================================== 
    11951196END MODULE dynspg_ts 
    1196  
    1197  
    1198  
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r5029 r5737  
    213213      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
    214214      !!---------------------------------------------------------------------- 
    215       ! 
    216215      INTEGER , INTENT(in   )                         ::   kt     ! ocean time-step index 
    217216      INTEGER , INTENT(in   )                         ::   kvor   ! =ncor (planetary) ; =ntot (total) ; 
     
    237236      zfact2 = 0.5 * 0.5      ! Local constant initialization 
    238237 
    239 !CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz ) 
    240238      !                                                ! =============== 
    241239      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    252250                  zwz(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    253251                       &         - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    254                        &     * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) 
     252                       &     * 0.5 * r1_e1e2f(ji,jj) 
    255253               END DO 
    256254            END DO 
     
    262260                       &       + (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    263261                       &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    264                        &       * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) )                                               & 
     262                       &       * 0.5 * r1_e1e2f(ji,jj)                                              & 
    265263                       &       ) 
    266264               END DO 
     
    285283               zx1 = zwx(ji-1,jj) + zwx(ji-1,jj+1) 
    286284               zx2 = zwx(ji  ,jj) + zwx(ji  ,jj+1) 
    287                pua(ji,jj,jk) = pua(ji,jj,jk) + zfact2 / e1u(ji,jj) * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) 
    288                pva(ji,jj,jk) = pva(ji,jj,jk) - zfact2 / e2v(ji,jj) * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 )  
     285               pua(ji,jj,jk) = pua(ji,jj,jk) + zfact2 * r1_e1u(ji,jj) * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) 
     286               pva(ji,jj,jk) = pva(ji,jj,jk) - zfact2 * r1_e2v(ji,jj) * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 )  
    289287            END DO   
    290288         END DO   
     
    365363                     zww(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    366364                        &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    367                         &       * 0.5 / ( e1f(ji,jj) * e2f (ji,jj) * fse3f(ji,jj,jk) ) 
     365                        &       * 0.5 / ( e1e2f (ji,jj) * fse3f(ji,jj,jk) ) 
    368366                  END DO 
    369367               END DO 
     
    380378                     zww(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    381379                        &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    382                         &       * 0.5 / ( e1f(ji,jj) * e2f (ji,jj) ) 
     380                        &       * 0.5 * r1_e1e2f(ji,jj) 
    383381                  END DO 
    384382               END DO 
     
    393391         DO jj = 2, jpjm1 
    394392            DO ji = fs_2, fs_jpim1   ! vector opt. 
    395                zy1 = ( zwy(ji,jj-1) + zwy(ji+1,jj-1) ) / e1u(ji,jj) 
    396                zy2 = ( zwy(ji,jj  ) + zwy(ji+1,jj  ) ) / e1u(ji,jj) 
    397                zx1 = ( zwx(ji-1,jj) + zwx(ji-1,jj+1) ) / e2v(ji,jj) 
    398                zx2 = ( zwx(ji  ,jj) + zwx(ji  ,jj+1) ) / e2v(ji,jj) 
     393               zy1 = ( zwy(ji,jj-1) + zwy(ji+1,jj-1) ) * r1_e1u(ji,jj) 
     394               zy2 = ( zwy(ji,jj  ) + zwy(ji+1,jj  ) ) * r1_e1u(ji,jj) 
     395               zx1 = ( zwx(ji-1,jj) + zwx(ji-1,jj+1) ) * r1_e2v(ji,jj) 
     396               zx2 = ( zwx(ji  ,jj) + zwx(ji  ,jj+1) ) * r1_e2v(ji,jj) 
    399397               ! enstrophy conserving formulation for relative vorticity term 
    400398               zua = zfact1 * ( zww(ji  ,jj-1) + zww(ji,jj) ) * ( zy1 + zy2 ) 
     
    481479                  zwz(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    482480                       &         - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    483                        &     * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) 
     481                       &     * 0.5 * r1_e1e2f(ji,jj) 
    484482               END DO 
    485483            END DO 
     
    491489                       &       + (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    492490                       &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    493                        &       * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) )                                                & 
     491                       &       * 0.5 * r1_e1e2f(ji,jj)                                                & 
    494492                       &       ) 
    495493               END DO 
     
    497495         END SELECT 
    498496         ! 
    499          IF( ln_sco ) THEN 
    500             DO jj = 1, jpj                      ! caution: don't use (:,:) for this loop  
    501                DO ji = 1, jpi                   ! it causes optimization problems on NEC in auto-tasking 
    502                   zwz(ji,jj) = zwz(ji,jj) / fse3f(ji,jj,jk) 
    503                   zwx(ji,jj) = e2u(ji,jj) * fse3u(ji,jj,jk) * un(ji,jj,jk) 
    504                   zwy(ji,jj) = e1v(ji,jj) * fse3v(ji,jj,jk) * vn(ji,jj,jk) 
    505                END DO 
    506             END DO 
     497         IF( ln_sco ) THEN                   !==  horizontal fluxes  ==! 
     498            zwz(:,:) = zwz(:,:) / fse3f(:,:,jk) 
     499            zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 
     500            zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
    507501         ELSE 
    508             DO jj = 1, jpj                      ! caution: don't use (:,:) for this loop  
    509                DO ji = 1, jpi                   ! it causes optimization problems on NEC in auto-tasking 
    510                   zwx(ji,jj) = e2u(ji,jj) * un(ji,jj,jk) 
    511                   zwy(ji,jj) = e1v(ji,jj) * vn(ji,jj,jk) 
    512                END DO 
    513             END DO 
    514          ENDIF 
    515          ! 
    516          ! Compute and add the vorticity term trend 
    517          ! ---------------------------------------- 
     502            zwx(:,:) = e2u(:,:) * un(:,:,jk) 
     503            zwy(:,:) = e1v(:,:) * vn(:,:,jk) 
     504         ENDIF 
     505         !                                   !==  compute and add the vorticity term trend  =! 
    518506         DO jj = 2, jpjm1 
    519507            DO ji = fs_2, fs_jpim1   ! vector opt. 
    520                zuav = zfact1 / e1u(ji,jj) * ( zwy(ji  ,jj-1) + zwy(ji+1,jj-1)   & 
    521                   &                         + zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) 
    522                zvau =-zfact1 / e2v(ji,jj) * ( zwx(ji-1,jj  ) + zwx(ji-1,jj+1)   & 
    523                   &                         + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) 
     508               zuav = zfact1 * r1_e1u(ji,jj) * ( zwy(ji  ,jj-1) + zwy(ji+1,jj-1)   & 
     509                  &                            + zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) 
     510               zvau =-zfact1 * r1_e2v(ji,jj) * ( zwx(ji-1,jj  ) + zwx(ji-1,jj+1)   & 
     511                  &                            + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) 
    524512               pua(ji,jj,jk) = pua(ji,jj,jk) + zuav * ( zwz(ji  ,jj-1) + zwz(ji,jj) ) 
    525513               pva(ji,jj,jk) = pva(ji,jj,jk) + zvau * ( zwz(ji-1,jj  ) + zwz(ji,jj) ) 
     
    553541      !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 
    554542      !!---------------------------------------------------------------------- 
    555       ! 
    556543      INTEGER , INTENT(in   )                         ::   kt     ! ocean time-step index 
    557544      INTEGER , INTENT(in   )                         ::   kvor   ! =ncor (planetary) ; =ntot (total) ; 
     
    627614      zfac12 = 1._wp / 12._wp    ! Local constant initialization 
    628615 
    629        
    630 !CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz, ztnw, ztne, ztsw, ztse ) 
    631616      !                                                ! =============== 
    632617      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    645630                  zwz(ji,jj) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    646631                       &         - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    647                        &     * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) * ze3f(ji,jj,jk) 
     632                       &     * 0.5 * r1_e1e2f(ji,jj) * ze3f(ji,jj,jk) 
    648633               END DO 
    649634            END DO 
     
    657642                       &       + (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    658643                       &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    659                        &       * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) )                                                & 
    660                        &       ) * ze3f(ji,jj,jk) 
     644                       &       * 0.5 * r1_e1e2f(ji,jj)   ) * ze3f(ji,jj,jk) 
    661645               END DO 
    662646            END DO 
    663647            CALL lbc_lnk( zwz, 'F', 1. ) 
    664648         END SELECT 
    665  
     649         ! 
     650         !                                   !==  horizontal fluxes  ==! 
    666651         zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 
    667652         zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
    668653 
    669          ! Compute and add the vorticity term trend 
    670          ! ---------------------------------------- 
     654         !                                   !==  compute and add the vorticity term trend  =! 
    671655         jj = 2 
    672656         ztne(1,:) = 0   ;   ztnw(1,:) = 0   ;   ztse(1,:) = 0   ;   ztsw(1,:) = 0 
    673          DO ji = 2, jpi    
     657         DO ji = 2, jpi          ! split in 2 parts due to vector opt. 
    674658               ztne(ji,jj) = zwz(ji-1,jj  ) + zwz(ji  ,jj  ) + zwz(ji  ,jj-1) 
    675659               ztnw(ji,jj) = zwz(ji-1,jj-1) + zwz(ji-1,jj  ) + zwz(ji  ,jj  ) 
     
    687671         DO jj = 2, jpjm1 
    688672            DO ji = fs_2, fs_jpim1   ! vector opt. 
    689                zua = + zfac12 / e1u(ji,jj) * (  ztne(ji,jj  ) * zwy(ji  ,jj  ) + ztnw(ji+1,jj) * zwy(ji+1,jj  )   & 
     673               zua = + zfac12 * r1_e1u(ji,jj) * (  ztne(ji,jj  ) * zwy(ji  ,jj  ) + ztnw(ji+1,jj) * zwy(ji+1,jj  )   & 
    690674                  &                           + ztse(ji,jj  ) * zwy(ji  ,jj-1) + ztsw(ji+1,jj) * zwy(ji+1,jj-1) ) 
    691                zva = - zfac12 / e2v(ji,jj) * (  ztsw(ji,jj+1) * zwx(ji-1,jj+1) + ztse(ji,jj+1) * zwx(ji  ,jj+1)   & 
     675               zva = - zfac12 * r1_e2v(ji,jj) * (  ztsw(ji,jj+1) * zwx(ji-1,jj+1) + ztse(ji,jj+1) * zwx(ji  ,jj+1)   & 
    692676                  &                           + ztnw(ji,jj  ) * zwx(ji-1,jj  ) + ztne(ji,jj  ) * zwx(ji  ,jj  ) ) 
    693677               pua(ji,jj,jk) = pua(ji,jj,jk) + zua 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90

    r5120 r5737  
    8585         DO jj = 2, jpj                   ! vertical fluxes  
    8686            DO ji = fs_2, jpi             ! vector opt. 
    87                zww(ji,jj) = 0.25_wp * e1t(ji,jj) * e2t(ji,jj) * wn(ji,jj,jk) 
     87               zww(ji,jj) = 0.25_wp * e1e2t(ji,jj) * wn(ji,jj,jk) 
    8888            END DO 
    8989         END DO 
     
    121121            DO ji = fs_2, fs_jpim1       ! vector opt. 
    122122               !                         ! vertical momentum advective trends 
    123                zua = - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) / ( e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) ) 
    124                zva = - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) ) 
     123               zua = - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 
     124               zva = - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    125125               !                         ! add the trends to the general momentum trends 
    126126               ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
     
    146146      ! 
    147147   END SUBROUTINE dyn_zad 
     148 
    148149 
    149150   SUBROUTINE dyn_zad_zts ( kt ) 
     
    205206         DO jj = 2, jpj                    
    206207            DO ji = fs_2, jpi             ! vector opt. 
    207                zww(ji,jj,jk) = 0.25_wp * e1t(ji,jj) * e2t(ji,jj) * wn(ji,jj,jk) 
     208               zww(ji,jj,jk) = 0.25_wp * e1e2t(ji,jj) * wn(ji,jj,jk) 
    208209            END DO 
    209210         END DO 
     
    251252               DO ji = fs_2, fs_jpim1       ! vector opt. 
    252253                  !                         ! vertical momentum advective trends 
    253                   zua = - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) / ( e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) ) 
    254                   zva = - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) ) 
     254                  zua = - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 
     255                  zva = - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    255256                  zus(ji,jj,jk,jta) = zus(ji,jj,jk,jtb) + zua * zts 
    256257                  zvs(ji,jj,jk,jta) = zvs(ji,jj,jk,jtb) + zva * zts 
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r5656 r5737  
    193193            DO jj = 2, jpjm1 
    194194               DO ji = fs_2, fs_jpim1   ! vector opt. 
    195                   zhdiv(ji,jj,jk) = r1_e12t(ji,jj) * ( un_td(ji,jj,jk) - un_td(ji-1,jj,jk) + vn_td(ji,jj,jk) - vn_td(ji,jj-1,jk) ) 
     195                  zhdiv(ji,jj,jk) = r1_e1e2t(ji,jj) * ( un_td(ji,jj,jk) - un_td(ji-1,jj,jk) + vn_td(ji,jj,jk) - vn_td(ji,jj-1,jk) ) 
    196196               END DO 
    197197            END DO 
Note: See TracChangeset for help on using the changeset viewer.