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 8882 for branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/DYN/divhor.F90 – NEMO

Ignore:
Timestamp:
2017-12-01T18:44:09+01:00 (6 years ago)
Author:
flavoni
Message:

dev_CNRS_2017 branch: merged dev_r7881_ENHANCE09_RK3 with trunk r8864

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/DYN/divhor.F90

    r7753 r8882  
    2929   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3030   USE lib_mpp         ! MPP library 
    31    USE wrk_nemo        ! Memory Allocation 
    3231   USE timing          ! Timing 
    3332 
     
    4039#  include "vectopt_loop_substitute.h90" 
    4140   !!---------------------------------------------------------------------- 
    42    !! NEMO/OPA 3.7 , NEMO Consortium (2014) 
     41   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    4342   !! $Id$  
    4443   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    6463      !!---------------------------------------------------------------------- 
    6564      ! 
    66       IF( nn_timing == 1 )   CALL timing_start('div_hor') 
     65      IF( ln_timing )   CALL timing_start('div_hor') 
    6766      ! 
    6867      IF( kt == nit000 ) THEN 
     
    7574         DO jj = 2, jpjm1 
    7675            DO ji = fs_2, fs_jpim1   ! vector opt. 
    77                hdivn(ji,jj,jk) = (  e2u(ji  ,jj) * e3u_n(ji  ,jj,jk) * un(ji  ,jj,jk)        & 
    78                   &               - e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) * un(ji-1,jj,jk)        & 
    79                   &               + e1v(ji,jj  ) * e3v_n(ji,jj  ,jk) * vn(ji,jj  ,jk)        & 
    80                   &               - e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) * vn(ji,jj-1,jk)   )    & 
    81                   &            / ( e1e2t(ji,jj) * e3t_n(ji,jj,jk) ) 
     76               hdivn(ji,jj,jk) = (  e2u(ji  ,jj) * e3u_n(ji  ,jj,jk) * un(ji  ,jj,jk)      & 
     77                  &               - e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) * un(ji-1,jj,jk)      & 
     78                  &               + e1v(ji,jj  ) * e3v_n(ji,jj  ,jk) * vn(ji,jj  ,jk)      & 
     79                  &               - e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) * vn(ji,jj-1,jk)  )   & 
     80                  &            * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
    8281            END DO   
    8382         END DO   
    84          IF( .NOT. AGRIF_Root() ) THEN 
    85             IF( nbondi ==  1 .OR. nbondi == 2 )   hdivn(nlci-1,   :  ,jk) = 0._wp      ! east 
    86             IF( nbondi == -1 .OR. nbondi == 2 )   hdivn(  2   ,   :  ,jk) = 0._wp      ! west 
    87             IF( nbondj ==  1 .OR. nbondj == 2 )   hdivn(  :   ,nlcj-1,jk) = 0._wp      ! north 
    88             IF( nbondj == -1 .OR. nbondj == 2 )   hdivn(  :   ,  2   ,jk) = 0._wp      ! south 
    89          ENDIF 
    9083      END DO 
     84#if defined key_agrif 
     85      IF( .NOT. Agrif_Root() ) THEN 
     86         IF( nbondi == -1 .OR. nbondi == 2 )   hdivn( 2:nbghostcells+1,:        ,:) = 0._wp      ! west 
     87         IF( nbondi ==  1 .OR. nbondi == 2 )   hdivn( nlci-nbghostcells:nlci-1,:,:) = 0._wp      ! east 
     88         IF( nbondj == -1 .OR. nbondj == 2 )   hdivn( :,2:nbghostcells+1        ,:) = 0._wp      ! south 
     89         IF( nbondj ==  1 .OR. nbondj == 2 )   hdivn( :,nlcj-nbghostcells:nlcj-1,:) = 0._wp      ! north 
     90      ENDIF 
     91#endif 
    9192      ! 
    92       IF( ln_rnf )   CALL sbc_rnf_div( hdivn )      !==  runoffs    ==!   (update hdivn field) 
     93      IF( ln_rnf )   CALL sbc_rnf_div( hdivn )              !==  runoffs    ==!   (update hdivn field) 
    9394      ! 
    94       IF( ln_isf )   CALL sbc_isf_div( hdivn )      !==  ice shelf  ==!   (update hdivn field) 
     95      IF( ln_isf )   CALL sbc_isf_div( hdivn )              !==  ice shelf  ==!   (update hdivn field) 
    9596      ! 
    96       IF( ln_iscpl .AND. ln_hsb ) CALL iscpl_div( hdivn ) !==  ice sheet  ==!   (update hdivn field) 
     97      IF( ln_iscpl .AND. ln_hsb )   CALL iscpl_div( hdivn ) !==  ice sheet  ==!   (update hdivn field) 
    9798      ! 
    98       CALL lbc_lnk( hdivn, 'T', 1. )                !==  lateral boundary cond.  ==!   (no sign change) 
     99      CALL lbc_lnk( hdivn, 'T', 1. )   !   (no sign change) 
    99100      ! 
    100       IF( nn_timing == 1 )  CALL timing_stop('div_hor') 
     101      IF( ln_timing )   CALL timing_stop('div_hor') 
    101102      ! 
    102103   END SUBROUTINE div_hor 
Note: See TracChangeset for help on using the changeset viewer.