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 14730 for NEMO/branches/2021/dev_r14393_HPC-03_Mele_Comm_Cleanup/src/OCE/stpmlf.F90 – NEMO

Ignore:
Timestamp:
2021-04-19T17:31:10+02:00 (3 years ago)
Author:
francesca
Message:

lbc_lnk reordering in stp_MLF and other adjustments - ticket #2607

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14393_HPC-03_Mele_Comm_Cleanup/src/OCE/stpmlf.F90

    r14682 r14730  
    170170      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    171171      !  THERMODYNAMICS 
    172       ! [ comm_cleanup ] ! lbc_lnk for AMM12 with blp / triad & for atf_qco with ln_iceberg .true. 
    173       IF( nn_hls.eq.2)   CALL lbc_lnk( 'stp_MLF', ts(:,:,:,:,Nbb), 'T', 1._wp) 
    174172                         CALL eos_rab( ts(:,:,:,:,Nbb), rab_b, Nnn )       ! before local thermal/haline expension ratio at T-points 
    175173                         CALL eos_rab( ts(:,:,:,:,Nnn), rab_n, Nnn )       ! now    local thermal/haline expension ratio at T-points 
     
    178176 
    179177      !  VERTICAL PHYSICS 
    180       ! [comm_cleanup] ! lbc_lnk from ZDF 
    181       IF (nn_hls.eq.2) THEN 
    182          IF( l_zdfsh2 ) THEN 
    183             CALL lbc_lnk( 'stp_MLF', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp,   & 
    184                &                    avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
    185          ELSE 
    186             CALL lbc_lnk( 'stp_MLF', avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
    187          ENDIF 
    188       ENDIF 
    189178                         CALL zdf_phy( kstp, Nbb, Nnn, Nrhs )   ! vertical physics update (top/bot drag, avt, avs, avm + MLD) 
    190179 
     
    240229               &         CALL Agrif_Sponge_dyn        ! momentum sponge 
    241230#endif 
    242       ! [comm_cleanup] ! lbc_lnk from DYN 
    243       IF (nn_hls.eq.2) THEN 
    244          CALL lbc_lnk( 'stp_MLF', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1., ww(:,:,:), 'W', 1.,       &  
    245                  &                uu(:,:,:,Nbb), 'U', -1., vv(:,:,:,Nbb), 'V', -1.) 
    246          IF(.NOT.lk_linssh) CALL lbc_lnk( 'stp_MLF', r3u(:,:,Nnn), 'U', 1.0_wp, r3v(:,:,Nnn), 'V', 1.0_wp,    & 
    247                  &                                   r3u(:,:,Nbb), 'U', 1.0_wp, r3v(:,:,Nbb), 'V', 1.0_wp,    & 
    248                  &                                   r3t(:,:,Nbb), 'T', 1.0_wp ) 
    249       ENDIF 
    250231                         CALL dyn_adv( kstp, Nbb, Nnn      , uu, vv, Nrhs )  ! advection (VF or FF)   ==> RHS 
    251232                         CALL dyn_vor( kstp,      Nnn      , uu, vv, Nrhs )  ! vorticity              ==> RHS 
     
    267248      ENDIF 
    268249 
     250      IF(nn_hls.eq.2.AND..NOT.lk_linssh) CALL lbc_lnk( 'stp_MLF', r3u(:,:,Naa), 'U', 1.0_wp, r3v(:,:,Naa), 'V', 1.0_wp) 
    269251 
    270252      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    292274                         CALL ssh_atf    ( kstp, Nbb, Nnn, Naa, ssh )            ! time filtering of "now" sea surface height 
    293275      IF(.NOT.lk_linssh) CALL dom_qco_r3c( ssh(:,:,Nnn), r3t_f, r3u_f, r3v_f )   ! "now" ssh/h_0 ratio from filtrered ssh 
    294          ! [comm_cleanup] this should not be needed 
    295          IF(nn_hls.eq.2.AND..NOT.lk_linssh) CALL lbc_lnk( 'stp_MLF', r3u_f, 'U', 1.0_wp, r3v_f, 'V', 1.0_wp ) 
     276      ! 
     277      IF(nn_hls.eq.2.AND..NOT.lk_linssh) CALL lbc_lnk( 'stp_MLF', r3u_f, 'U', 1.0_wp, r3v_f, 'V', 1.0_wp, r3t_f, 'T', 1.0_wp ) 
    296278#if defined key_top 
    297279      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    329311      ENDIF 
    330312#endif 
    331  
    332       ! [comm_cleanup] ! lbc_lnk from tra_adv 
    333       IF (nn_hls.EQ.2) THEN 
    334          SELECT CASE ( nadv ) 
    335          CASE ( np_FCT )                                 ! FCT scheme : 2nd / 4th order 
    336                CALL lbc_lnk( 'stp_MLF', ts(:,:,:,:,Nbb), 'T', 1., ts(:,:,:,:,Nnn), 'T', 1.) 
    337                CALL lbc_lnk( 'stp_MLF', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1., ww(:,:,:), 'W', 1.) 
    338          CASE ( np_MUS )                                 ! MUSCL 
    339                 CALL lbc_lnk( 'stp_MLF', ts(:,:,:,:,Nbb), 'T', 1.) 
    340          CASE ( np_UBS )                                 ! UBS 
    341                 CALL lbc_lnk( 'stp_MLF', ts(:,:,:,:,Nbb), 'T', 1.) 
    342          CASE ( np_QCK )                                 ! QUICKEST 
    343                CALL lbc_lnk( 'stp_MLF', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.) 
    344                CALL lbc_lnk( 'stp_MLF', ts(:,:,:,:,Nbb), 'T', 1.) 
    345          END SELECT 
    346       ENDIF 
    347313 
    348314      ! TEMP: [tiling] Separate loop over tile domains (due to tra_adv workarounds for tiling) 
     
    383349                         CALL tra_atf_qco   ( kstp, Nbb, Nnn, Naa        , ts )   ! time filtering of "now" tracer arrays 
    384350                         CALL dyn_atf_qco   ( kstp, Nbb, Nnn, Naa, uu, vv     )   ! time filtering of "now" velocities 
     351 
     352      IF( nn_hls.eq.2)   CALL lbc_lnk( 'stp_MLF', ts(:,:,:,jp_tem,Nnn), 'T', 1._wp, ts(:,:,:,jp_sal,Nnn), 'T', 1._wp) 
     353 
    385354      IF(.NOT.lk_linssh) THEN 
    386355                         r3t(:,:,Nnn) = r3t_f(:,:)                                ! update now ssh/h_0 with time filtered values 
     
    548517                       &          , pts(:,:,:,jp_tem,Kaa), 'T',  1., pts(:,:,:,jp_sal,Kaa), 'T',  1. ) 
    549518      ! 
     519      IF (nn_hls.eq.2) THEN 
     520         IF( l_zdfsh2 ) THEN 
     521            CALL lbc_lnk( 'stp_MLF', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp,   & 
     522                &                    avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     523         ELSE 
     524            CALL lbc_lnk( 'stp_MLF', avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     525         ENDIF 
     526      ENDIF 
    550527      !                                        !* BDY open boundaries 
    551528      IF( ln_bdy )   THEN 
Note: See TracChangeset for help on using the changeset viewer.