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 13463 for NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/DYN/divhor.F90 – NEMO

Ignore:
Timestamp:
2020-09-14T17:40:34+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2195:update to trunk 13461

Location:
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@13382        sette 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/DYN/divhor.F90

    r10425 r13463  
    2020   USE oce             ! ocean dynamics and tracers 
    2121   USE dom_oce         ! ocean space and time domain 
    22    USE sbc_oce, ONLY : ln_rnf, ln_isf ! surface boundary condition: ocean 
    23    USE sbcrnf          ! river runoff  
    24    USE sbcisf          ! ice shelf 
    25    USE iscplhsb        ! ice sheet / ocean coupling 
    26    USE iscplini        ! ice sheet / ocean coupling 
     22   USE sbc_oce, ONLY : ln_rnf      ! river runoff 
     23   USE sbcrnf , ONLY : sbc_rnf_div ! river runoff  
     24   USE isf_oce, ONLY : ln_isf      ! ice shelf 
     25   USE isfhdiv, ONLY : isf_hdiv    ! ice shelf 
    2726#if defined key_asminc    
    2827   USE asminc          ! Assimilation increment 
     
    4039 
    4140   !! * Substitutions 
    42 #  include "vectopt_loop_substitute.h90" 
     41#  include "do_loop_substitute.h90" 
     42#  include "domzgr_substitute.h90" 
    4343   !!---------------------------------------------------------------------- 
    4444   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    4848CONTAINS 
    4949 
    50    SUBROUTINE div_hor( kt ) 
     50   SUBROUTINE div_hor( kt, Kbb, Kmm ) 
    5151      !!---------------------------------------------------------------------- 
    5252      !!                  ***  ROUTINE div_hor  *** 
     
    5555      !! 
    5656      !! ** Method  :   the now divergence is computed as : 
    57       !!         hdivn = 1/(e1e2t*e3t) ( di[e2u*e3u un] + dj[e1v*e3v vn] ) 
     57      !!         hdiv = 1/(e1e2t*e3t) ( di[e2u*e3u un] + dj[e1v*e3v vn] ) 
    5858      !!      and correct with runoff inflow (div_rnf) and cross land flow (div_cla)  
    5959      !! 
    60       !! ** Action  : - update hdivn, the now horizontal divergence 
     60      !! ** Action  : - update hdiv, the now horizontal divergence 
    6161      !!---------------------------------------------------------------------- 
    62       INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     62      INTEGER, INTENT(in) ::   kt        ! ocean time-step index 
     63      INTEGER, INTENT(in) ::   Kbb, Kmm  ! ocean time level indices 
    6364      ! 
    6465      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
    6566      REAL(wp) ::   zraur, zdep   ! local scalars 
     67      REAL(wp), DIMENSION(jpi,jpj) :: ztmp 
    6668      !!---------------------------------------------------------------------- 
    6769      ! 
     
    7274         IF(lwp) WRITE(numout,*) 'div_hor : horizontal velocity divergence ' 
    7375         IF(lwp) WRITE(numout,*) '~~~~~~~   ' 
     76         hdiv(:,:,:) = 0._wp    ! initialize hdiv for the halos at the first time step 
    7477      ENDIF 
    7578      ! 
    76       DO jk = 1, jpkm1                                      !==  Horizontal divergence  ==! 
    77          DO jj = 2, jpjm1 
    78             DO ji = fs_2, fs_jpim1   ! vector opt. 
    79                hdivn(ji,jj,jk) = (  e2u(ji  ,jj) * e3u_n(ji  ,jj,jk) * un(ji  ,jj,jk)      & 
    80                   &               - e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) * un(ji-1,jj,jk)      & 
    81                   &               + e1v(ji,jj  ) * e3v_n(ji,jj  ,jk) * vn(ji,jj  ,jk)      & 
    82                   &               - e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) * vn(ji,jj-1,jk)  )   & 
    83                   &            * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
    84             END DO   
    85          END DO   
    86       END DO 
    87 #if defined key_agrif 
    88       IF( .NOT. Agrif_Root() ) THEN 
    89          IF( nbondi == -1 .OR. nbondi == 2 )   hdivn(   2   ,  :   ,:) = 0._wp      ! west 
    90          IF( nbondi ==  1 .OR. nbondi == 2 )   hdivn( nlci-1,  :   ,:) = 0._wp      ! east 
    91          IF( nbondj == -1 .OR. nbondj == 2 )   hdivn(   :   ,  2   ,:) = 0._wp      ! south 
    92          IF( nbondj ==  1 .OR. nbondj == 2 )   hdivn(   :   ,nlcj-1,:) = 0._wp      ! north 
    93       ENDIF 
     79      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     80         hdiv(ji,jj,jk) = (  e2u(ji  ,jj) * e3u(ji  ,jj,jk,Kmm) * uu(ji  ,jj,jk,Kmm)      & 
     81            &               - e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) * uu(ji-1,jj,jk,Kmm)      & 
     82            &               + e1v(ji,jj  ) * e3v(ji,jj  ,jk,Kmm) * vv(ji,jj  ,jk,Kmm)      & 
     83            &               - e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) * vv(ji,jj-1,jk,Kmm)  )   & 
     84            &            * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     85      END_3D 
     86      ! 
     87      IF( ln_rnf )   CALL sbc_rnf_div( hdiv, Kmm )                     !==  runoffs    ==!   (update hdiv field) 
     88      ! 
     89#if defined key_asminc  
     90      IF( ln_sshinc .AND. ln_asmiau )   CALL ssh_asm_div( kt, Kbb, Kmm, hdiv )   !==  SSH assimilation  ==!   (update hdiv field) 
     91      !  
    9492#endif 
    9593      ! 
    96       IF( ln_rnf )   CALL sbc_rnf_div( hdivn )              !==  runoffs    ==!   (update hdivn field) 
     94      IF( ln_isf )                      CALL isf_hdiv( kt, Kmm, hdiv )           !==  ice shelf         ==!   (update hdiv field) 
    9795      ! 
    98 #if defined key_asminc  
    99       IF( ln_sshinc .AND. ln_asmiau )   CALL ssh_asm_div( kt, hdivn )   !==  SSH assimilation  ==!   (update hdivn field) 
    100       !  
    101 #endif 
    102       IF( ln_isf )   CALL sbc_isf_div( hdivn )      !==  ice shelf  ==!   (update hdivn field) 
    103       ! 
    104       IF( ln_iscpl .AND. ln_hsb )   CALL iscpl_div( hdivn ) !==  ice sheet  ==!   (update hdivn field) 
    105       ! 
    106       CALL lbc_lnk( 'divhor', hdivn, 'T', 1. )   !   (no sign change) 
     96      CALL lbc_lnk( 'divhor', hdiv, 'T', 1.0_wp )   !   (no sign change) 
    10797      ! 
    10898      IF( ln_timing )   CALL timing_stop('div_hor') 
Note: See TracChangeset for help on using the changeset viewer.