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 7351 for branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90 – NEMO

Ignore:
Timestamp:
2016-11-28T17:04:10+01:00 (7 years ago)
Author:
emanuelaclementi
Message:

ticket #1805 step 3: /2016/dev_INGV_UKMO_2016 aligned to the trunk at revision 7161

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r5930 r7351  
    3232   USE trd_oce        ! trends: ocean variables 
    3333   USE trddyn         ! trend manager: dynamics 
    34    USE c1d            ! 1D vertical configuration 
    3534   ! 
    3635   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     
    7675    
    7776   !! * Substitutions 
    78 #  include "domzgr_substitute.h90" 
    7977#  include "vectopt_loop_substitute.h90" 
    8078   !!---------------------------------------------------------------------- 
     
    285283 
    286284         IF( ln_sco ) THEN 
    287             zwz(:,:) = zwz(:,:) / fse3f(:,:,jk) 
    288             zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 
    289             zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
     285            zwz(:,:) = zwz(:,:) / e3f_n(:,:,jk) 
     286            zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * un(:,:,jk) 
     287            zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 
    290288         ELSE 
    291289            zwx(:,:) = e2u(:,:) * un(:,:,jk) 
     
    405403         ! 
    406404         IF( ln_sco ) THEN                   !==  horizontal fluxes  ==! 
    407             zwz(:,:) = zwz(:,:) / fse3f(:,:,jk) 
    408             zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 
    409             zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
     405            zwz(:,:) = zwz(:,:) / e3f_n(:,:,jk) 
     406            zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * un(:,:,jk) 
     407            zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 
    410408         ELSE 
    411409            zwx(:,:) = e2u(:,:) * un(:,:,jk) 
     
    415413         DO jj = 2, jpjm1 
    416414            DO ji = fs_2, fs_jpim1   ! vector opt. 
    417                zuav = r1_8 * r1_e1u(ji,jj) * ( zwy(ji  ,jj-1) + zwy(ji+1,jj-1)   & 
    418                   &                       + zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) 
    419                zvau =-r1_8 * r1_e2v(ji,jj) * ( zwx(ji-1,jj  ) + zwx(ji-1,jj+1)   & 
    420                   &                       + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) 
     415               zuav = r1_8 * r1_e1u(ji,jj) * (  zwy(ji  ,jj-1) + zwy(ji+1,jj-1)  & 
     416                  &                           + zwy(ji  ,jj  ) + zwy(ji+1,jj  ) ) 
     417               zvau =-r1_8 * r1_e2v(ji,jj) * (  zwx(ji-1,jj  ) + zwx(ji-1,jj+1)  & 
     418                  &                           + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) 
    421419               pua(ji,jj,jk) = pua(ji,jj,jk) + zuav * ( zwz(ji  ,jj-1) + zwz(ji,jj) ) 
    422420               pva(ji,jj,jk) = pva(ji,jj,jk) + zvau * ( zwz(ji-1,jj  ) + zwz(ji,jj) ) 
     
    483481            DO jj = 1, jpjm1 
    484482               DO ji = 1, fs_jpim1   ! vector opt. 
    485                   ze3  = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
    486                      &   + fse3t(ji,jj  ,jk)*tmask(ji,jj  ,jk) + fse3t(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) 
    487                   IF( ze3 /= 0._wp ) THEN   ;   z1_e3f(ji,jj) = 4.0_wp / ze3 
    488                   ELSE                      ;   z1_e3f(ji,jj) = 0.0_wp 
     483                  ze3  = (  e3t_n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
     484                     &    + e3t_n(ji,jj  ,jk)*tmask(ji,jj  ,jk) + e3t_n(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) 
     485                  IF( ze3 /= 0._wp ) THEN   ;   z1_e3f(ji,jj) = 4._wp / ze3 
     486                  ELSE                      ;   z1_e3f(ji,jj) = 0._wp 
    489487                  ENDIF 
    490488               END DO 
     
    493491            DO jj = 1, jpjm1 
    494492               DO ji = 1, fs_jpim1   ! vector opt. 
    495                   ze3  = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
    496                      &   + fse3t(ji,jj  ,jk)*tmask(ji,jj  ,jk) + fse3t(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) 
    497                   zmsk = (                   tmask(ji,jj+1,jk) +                     tmask(ji+1,jj+1,jk)   & 
    498                      &                     + tmask(ji,jj  ,jk) +                     tmask(ji+1,jj  ,jk) ) 
     493                  ze3  = (  e3t_n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk)   & 
     494                     &    + e3t_n(ji,jj  ,jk)*tmask(ji,jj  ,jk) + e3t_n(ji+1,jj  ,jk)*tmask(ji+1,jj  ,jk) ) 
     495                  zmsk = (                    tmask(ji,jj+1,jk) +                     tmask(ji+1,jj+1,jk)   & 
     496                     &                      + tmask(ji,jj  ,jk) +                     tmask(ji+1,jj  ,jk) ) 
    499497                  IF( ze3 /= 0._wp ) THEN   ;   z1_e3f(ji,jj) = zmsk / ze3 
    500                   ELSE                      ;   z1_e3f(ji,jj) = 0.0_wp 
     498                  ELSE                      ;   z1_e3f(ji,jj) = 0._wp 
    501499                  ENDIF 
    502500               END DO 
     
    559557         ! 
    560558         !                                   !==  horizontal fluxes  ==! 
    561          zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 
    562          zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
     559         zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * un(:,:,jk) 
     560         zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 
    563561 
    564562         !                                   !==  compute and add the vorticity term trend  =! 
     
    634632         WRITE(numout,*) '           enstrophy and energy conserving scheme         ln_dynvor_een = ', ln_dynvor_een 
    635633         WRITE(numout,*) '              e3f = averaging /4 (=0) or /sum(tmask) (=1)    nn_een_e3f = ', nn_een_e3f 
    636          WRITE(numout,*) '           masked (=1) or unmasked(=0) vorticity          ln_dynvor_msk = ', ln_dynvor_msk 
     634         WRITE(numout,*) '           masked (=T) or unmasked(=F) vorticity          ln_dynvor_msk = ', ln_dynvor_msk 
    637635      ENDIF 
    638636 
     
    663661      IF( ln_dynvor_een ) THEN   ;   ioptio = ioptio + 1   ;    nvor_scheme = np_EEN   ;   ENDIF 
    664662      ! 
    665       IF( ( ioptio /= 1).AND.( .NOT.lk_c1d ) ) CALL ctl_stop( ' use ONE and ONLY one vorticity scheme' ) 
     663      IF( ioptio /= 1 ) CALL ctl_stop( ' use ONE and ONLY one vorticity scheme' ) 
    666664      !                       
    667665      IF(lwp) WRITE(numout,*)        ! type of calculated vorticity (set ncor, nrvm, ntot) 
Note: See TracChangeset for help on using the changeset viewer.