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 14789 for NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/OCE/DYN/dynatf.F90 – NEMO

Ignore:
Timestamp:
2021-05-05T13:18:04+02:00 (3 years ago)
Author:
mcastril
Message:

[2021/HPC-11_mcastril_HPDAonline_DiagGPU] Update externals

Location:
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
         5^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8^/vendors/PPR@HEAD            ext/PPR 
        89 
        910# SETTE 
        10 ^/utils/CI/sette@13559        sette 
         11^/utils/CI/sette@14244        sette 
  • NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/OCE/DYN/dynatf.F90

    r13472 r14789  
    1313   !!             -   !  2002-10  (C. Talandier, A-M. Treguier) Open boundary cond. 
    1414   !!            2.0  !  2005-11  (V. Garnier) Surface pressure gradient organization 
    15    !!            2.3  !  2007-07  (D. Storkey) Calls to BDY routines.  
     15   !!            2.3  !  2007-07  (D. Storkey) Calls to BDY routines. 
    1616   !!            3.2  !  2009-06  (G. Madec, R.Benshila)  re-introduce the vvl option 
    1717   !!            3.3  !  2010-09  (D. Storkey, E.O'Dea) Bug fix for BDY module 
     
    2222   !!            4.1  !  2019-08  (A. Coward, D. Storkey) Rename dynnxt.F90 -> dynatf.F90. Now just does time filtering. 
    2323   !!------------------------------------------------------------------------- 
    24    
     24 
    2525   !!---------------------------------------------------------------------------------------------- 
    2626   !!   dyn_atf       : apply Asselin time filtering to "now" velocities and vertical scale factors 
     
    4242   USE trdken         ! trend manager: kinetic energy 
    4343   USE isf_oce   , ONLY: ln_isf     ! ice shelf 
    44    USE isfdynatf , ONLY: isf_dynatf ! ice shelf volume filter correction subroutine  
     44   USE isfdynatf , ONLY: isf_dynatf ! ice shelf volume filter correction subroutine 
    4545   ! 
    4646   USE in_out_manager ! I/O manager 
     
    6060   PUBLIC    dyn_atf   ! routine called by step.F90 
    6161 
    62 #if defined key_qco 
     62#if defined key_qco   ||   defined key_linssh 
    6363   !!---------------------------------------------------------------------- 
    64    !!   'key_qco'      EMPTY ROUTINE     Quasi-Eulerian vertical coordonate 
     64   !!   'key_qco'                        Quasi-Eulerian vertical coordinate 
     65   !!       OR         EMPTY MODULE 
     66   !!   'key_linssh'                        Fix in time vertical coordinate 
    6567   !!---------------------------------------------------------------------- 
    6668CONTAINS 
    6769 
    68    SUBROUTINE dyn_atf ( kt, Kbb, Kmm, Kaa, puu, pvv, pe3t, pe3u, pe3v ) 
     70   SUBROUTINE dyn_atf( kt, Kbb, Kmm, Kaa, puu, pvv, pe3t, pe3u, pe3v ) 
    6971      INTEGER                             , INTENT(in   ) :: kt               ! ocean time-step index 
    7072      INTEGER                             , INTENT(in   ) :: Kbb, Kmm, Kaa    ! before and after time level indices 
     
    8183   !!---------------------------------------------------------------------- 
    8284   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
    83    !! $Id$  
     85   !! $Id$ 
    8486   !! Software governed by the CeCILL license (see ./LICENSE) 
    8587   !!---------------------------------------------------------------------- 
     
    8991      !!---------------------------------------------------------------------- 
    9092      !!                  ***  ROUTINE dyn_atf  *** 
    91       !!                    
    92       !! ** Purpose :   Finalize after horizontal velocity. Apply the boundary  
     93      !! 
     94      !! ** Purpose :   Finalize after horizontal velocity. Apply the boundary 
    9395      !!             condition on the after velocity and apply the Asselin time 
    9496      !!             filter to the now fields. 
     
    9799      !!             estimate (ln_dynspg_ts=T) 
    98100      !! 
    99       !!              * Apply lateral boundary conditions on after velocity  
     101      !!              * Apply lateral boundary conditions on after velocity 
    100102      !!             at the local domain boundaries through lbc_lnk call, 
    101103      !!             at the one-way open boundaries (ln_bdy=T), 
     
    104106      !!              * Apply the Asselin time filter to the now fields 
    105107      !!             arrays to start the next time step: 
    106       !!                (puu(Kmm),pvv(Kmm)) = (puu(Kmm),pvv(Kmm))  
     108      !!                (puu(Kmm),pvv(Kmm)) = (puu(Kmm),pvv(Kmm)) 
    107109      !!                                    + rn_atfp [ (puu(Kbb),pvv(Kbb)) + (puu(Kaa),pvv(Kaa)) - 2 (puu(Kmm),pvv(Kmm)) ] 
    108110      !!             Note that with flux form advection and non linear free surface, 
     
    110112      !!             As a result, dyn_atf MUST be called after tra_atf. 
    111113      !! 
    112       !! ** Action :   puu(Kmm),pvv(Kmm)   filtered now horizontal velocity  
     114      !! ** Action :   puu(Kmm),pvv(Kmm)   filtered now horizontal velocity 
    113115      !!---------------------------------------------------------------------- 
    114116      INTEGER                             , INTENT(in   ) :: kt               ! ocean time-step index 
     
    119121      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    120122      REAL(wp) ::   zue3a, zue3n, zue3b, zcoef    ! local scalars 
    121       REAL(wp) ::   zve3a, zve3n, zve3b, z1_2dt   !   -      - 
     123      REAL(wp) ::   zve3a, zve3n, zve3b           !   -      - 
    122124      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zue, zve, zwfld 
    123125      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zutau, zvtau 
    124       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ze3t_f, ze3u_f, ze3v_f, zua, zva  
     126      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ze3t_f, ze3u_f, ze3v_f, zua, zva 
    125127      !!---------------------------------------------------------------------- 
    126128      ! 
     
    150152         ! 
    151153         IF( .NOT.ln_bt_fw ) THEN 
    152             ! Remove advective velocity from "now velocities"  
    153             ! prior to asselin filtering      
    154             ! In the forward case, this is done below after asselin filtering    
    155             ! so that asselin contribution is removed at the same time  
     154            ! Remove advective velocity from "now velocities" 
     155            ! prior to asselin filtering 
     156            ! In the forward case, this is done below after asselin filtering 
     157            ! so that asselin contribution is removed at the same time 
    156158            DO jk = 1, jpkm1 
    157159               puu(:,:,jk,Kmm) = ( puu(:,:,jk,Kmm) - un_adv(:,:)*r1_hu(:,:,Kmm) + uu_b(:,:,Kmm) )*umask(:,:,jk) 
    158160               pvv(:,:,jk,Kmm) = ( pvv(:,:,jk,Kmm) - vn_adv(:,:)*r1_hv(:,:,Kmm) + vv_b(:,:,Kmm) )*vmask(:,:,jk) 
    159             END DO   
     161            END DO 
    160162         ENDIF 
    161163      ENDIF 
    162164 
    163165      ! Update after velocity on domain lateral boundaries 
    164       ! --------------------------------------------------       
     166      ! -------------------------------------------------- 
    165167# if defined key_agrif 
    166168      CALL Agrif_dyn( kt )             !* AGRIF zoom boundaries 
    167169# endif 
    168170      ! 
    169       CALL lbc_lnk_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp )     !* local domain boundaries 
     171      CALL lbc_lnk( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp )     !* local domain boundaries 
    170172      ! 
    171173      !                                !* BDY open boundaries 
     
    194196      ! Time filter and swap of dynamics arrays 
    195197      ! ------------------------------------------ 
    196           
    197       IF( .NOT. l_1st_euler ) THEN    !* Leap-Frog : Asselin time filter  
     198 
     199      IF( .NOT. l_1st_euler ) THEN    !* Leap-Frog : Asselin time filter 
    198200         !                                ! =============! 
    199201         IF( ln_linssh ) THEN             ! Fixed volume ! 
     
    220222            DO jk = 1, jpkm1 
    221223               ze3t_f(:,:,jk) = ze3t_f(:,:,jk) - zcoef * zwfld(:,:) * tmask(:,:,jk) & 
    222                               &                        * pe3t(:,:,jk,Kmm) / ( ht(:,:) + 1._wp - ssmask(:,:) )  
     224                              &                        * pe3t(:,:,jk,Kmm) / ( ht(:,:) + 1._wp - ssmask(:,:) ) 
    223225            END DO 
    224226            ! 
     
    257259                  pvv(ji,jj,jk,Kmm) = ( zve3n + rn_atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ze3v_f(ji,jj,jk) 
    258260               END_3D 
    259                pe3u(:,:,1:jpkm1,Kmm) = ze3u_f(:,:,1:jpkm1)   
     261               pe3u(:,:,1:jpkm1,Kmm) = ze3u_f(:,:,1:jpkm1) 
    260262               pe3v(:,:,1:jpkm1,Kmm) = ze3v_f(:,:,1:jpkm1) 
    261263               ! 
     
    268270         IF( ln_dynspg_ts .AND. ln_bt_fw ) THEN 
    269271            ! Revert filtered "now" velocities to time split estimate 
    270             ! Doing it here also means that asselin filter contribution is removed   
     272            ! Doing it here also means that asselin filter contribution is removed 
    271273            zue(:,:) = pe3u(:,:,1,Kmm) * puu(:,:,1,Kmm) * umask(:,:,1) 
    272             zve(:,:) = pe3v(:,:,1,Kmm) * pvv(:,:,1,Kmm) * vmask(:,:,1)     
     274            zve(:,:) = pe3v(:,:,1,Kmm) * pvv(:,:,1,Kmm) * vmask(:,:,1) 
    273275            DO jk = 2, jpkm1 
    274276               zue(:,:) = zue(:,:) + pe3u(:,:,jk,Kmm) * puu(:,:,jk,Kmm) * umask(:,:,jk) 
    275                zve(:,:) = zve(:,:) + pe3v(:,:,jk,Kmm) * pvv(:,:,jk,Kmm) * vmask(:,:,jk)     
     277               zve(:,:) = zve(:,:) + pe3v(:,:,jk,Kmm) * pvv(:,:,jk,Kmm) * vmask(:,:,jk) 
    276278            END DO 
    277279            DO jk = 1, jpkm1 
     
    318320      ENDIF 
    319321      IF( l_trddyn ) THEN                ! 3D output: asselin filter trends on momentum 
    320          zua(:,:,:) = ( puu(:,:,:,Kmm) - zua(:,:,:) ) * z1_2dt 
    321          zva(:,:,:) = ( pvv(:,:,:,Kmm) - zva(:,:,:) ) * z1_2dt 
     322         zua(:,:,:) = ( puu(:,:,:,Kmm) - zua(:,:,:) ) * r1_Dt 
     323         zva(:,:,:) = ( pvv(:,:,:,Kmm) - zva(:,:,:) ) * r1_Dt 
    322324         CALL trd_dyn( zua, zva, jpdyn_atf, kt, Kmm ) 
    323325      ENDIF 
     
    325327      IF ( iom_use("utau") ) THEN 
    326328         IF ( ln_drgice_imp.OR.ln_isfcav ) THEN 
    327             ALLOCATE(zutau(jpi,jpj))  
     329            ALLOCATE(zutau(jpi,jpj)) 
    328330            DO_2D( 0, 0, 0, 0 ) 
    329                jk = miku(ji,jj)  
     331               jk = miku(ji,jj) 
    330332               zutau(ji,jj) = utau(ji,jj) + 0.5_wp * rho0 * ( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) * puu(ji,jj,jk,Kaa) 
    331333            END_2D 
     
    353355      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab3d_1=puu(:,:,:,Kaa), clinfo1=' nxt  - puu(:,:,:,Kaa): ', mask1=umask,   & 
    354356         &                                  tab3d_2=pvv(:,:,:,Kaa), clinfo2=' pvv(:,:,:,Kaa): '       , mask2=vmask ) 
    355       !  
     357      ! 
    356358      IF( ln_dynspg_ts )   DEALLOCATE( zue, zve ) 
    357359      IF( l_trddyn     )   DEALLOCATE( zua, zva ) 
Note: See TracChangeset for help on using the changeset viewer.