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 11261 – NEMO

Changeset 11261


Ignore:
Timestamp:
2019-07-12T10:28:39+02:00 (5 years ago)
Author:
girrmann
Message:

dev_r10984_HPC-13 : bugfix, see #2285

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/DYN/dynspg_ts.F90

    r11245 r11261  
    542542         END DO 
    543543         ! 
    544          CALL lbc_lnk_multi( 'dynspg_ts', ssha_e, 'T', 1._wp,  zhU, 'U', 1._wp,  zhV, 'V', 1._wp ) 
     544         CALL lbc_lnk_multi( 'dynspg_ts', ssha_e, 'T', 1._wp,  zhU, 'U', -1._wp,  zhV, 'V', -1._wp ) 
    545545         ! 
    546546         !                             ! Sum over sub-time-steps to compute advective velocities 
     
    567567               END DO 
    568568            END DO 
    569             !                    !* Update ocean depth (variable volume case only) 
    570             hu_e (2:jpim1,2:jpjm1) = hu_0(2:jpim1,2:jpjm1) + zsshu_a(2:jpim1,2:jpjm1)          
    571             hv_e (2:jpim1,2:jpjm1) = hv_0(2:jpim1,2:jpjm1) + zsshv_a(2:jpim1,2:jpjm1) 
    572             hur_e(2:jpim1,2:jpjm1) = ssumask(2:jpim1,2:jpjm1) / ( hu_e(2:jpim1,2:jpjm1) + 1._wp - ssumask(2:jpim1,2:jpjm1) ) 
    573             hvr_e(2:jpim1,2:jpjm1) = ssvmask(2:jpim1,2:jpjm1) / ( hv_e(2:jpim1,2:jpjm1) + 1._wp - ssvmask(2:jpim1,2:jpjm1) ) 
    574569         ENDIF    
    575570         !          
     
    626621         !     Compute barotropic speeds at step jit+1    (h : total height of the water colomn) 
    627622         !--                              VECTOR FORM 
    628          !--     m+1                    m               /                                     m+1/2           \     --! 
    629          !--    u     =                u   + delta_t' * \ grad_x( ssh') -         f * k vect u      +     frc /     --! 
    630          !--                                                                                                        --! 
    631          !--                             FLUX FORM                                                                  --! 
    632          !--   m+1    ___1___   /  m    m               /                  m+1/2              m+1/2    n      \ \  --! 
    633          !--  u    =     m+1   |  h  * u   + delta_t' * \ grad_x( ssh') - h     * f * k vect u      + h * frc /   | --! 
    634          !--            h       \                                                                                /  --! 
    635          !------------------------------------------------------------------------------------------------------------! 
     623         !--   m+1                 m               /                                                       m+1/2           \    --! 
     624         !--  u     =             u   + delta_t' * \         (1-r)*g * grad_x( ssh') -         f * k vect u      +     frc /    --! 
     625         !--                                                                                                                    --! 
     626         !--                             FLUX FORM                                                                              --! 
     627         !--  m+1   __1__  /  m    m               /  m+1/2                             m+1/2              m+1/2    n      \ \  --! 
     628         !-- u    =   m+1 |  h  * u   + delta_t' * \ h     * (1-r)*g * grad_x( ssh') - h     * f * k vect u      + h * frc /  | --! 
     629         !--         h     \                                                                                                 /  --! 
     630         !------------------------------------------------------------------------------------------------------------------------! 
    636631         IF( ln_dynadv_vec .OR. ln_linssh ) THEN      !* Vector form 
    637632            DO jj = 2, jpjm1 
     
    654649            DO jj = 2, jpjm1 
    655650               DO ji = 2, jpim1 
    656                   !                    ! backward extrapolated depth used in spg terms at jn+1/2 
     651                  !                    ! hu_e, hv_e hold depth at jn,  zhup2_e, zhvp2_e hold extrapolated depth at jn+1/2 
     652                  !                    ! backward interpolated depth used in spg terms at jn+1/2 
    657653                  zhu_bck = hu_0(ji,jj) + r1_2*r1_e1e2u(ji,jj) * (  e1e2t(ji  ,jj) * zsshp2_e(ji  ,jj)    & 
    658654                       &                                          + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj)  ) * ssumask(ji,jj) 
     
    661657                  !                    ! inverse depth at jn+1 
    662658                  z1_hu = ssumask(ji,jj) / ( hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - ssumask(ji,jj) ) 
    663                   z1_hv = ssvmask(ji,jj) / ( hu_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
     659                  z1_hv = ssvmask(ji,jj) / ( hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    664660                  ! 
    665661                  ua_e(ji,jj) = (               hu_e  (ji,jj) *   un_e (ji,jj)      &  
     
    671667                       &            + rdtbt * (  zhv_bck        * zv_spg (ji,jj)  &   ! 
    672668                       &                       + zhvp2_e(ji,jj) * zv_trd (ji,jj)  &   ! 
    673                        &                       +  hv_n  (ji,jj) * zv_frc (ji,jj)  )   ) * z1_hu 
     669                       &                       +  hv_n  (ji,jj) * zv_frc (ji,jj)  )   ) * z1_hv 
    674670               END DO 
    675671            END DO 
     
    685681         ENDIF 
    686682        
    687          IF( .NOT. ln_linssh ) THEN                      !* domain lateral boundary 
     683         IF( .NOT.ln_linssh ) THEN   !* Update ocean depth (variable volume case only) 
     684            hu_e (2:jpim1,2:jpjm1) = hu_0(2:jpim1,2:jpjm1) + zsshu_a(2:jpim1,2:jpjm1) 
     685            hur_e(2:jpim1,2:jpjm1) = ssumask(2:jpim1,2:jpjm1) / ( hu_e(2:jpim1,2:jpjm1) + 1._wp - ssumask(2:jpim1,2:jpjm1) ) 
     686            hv_e (2:jpim1,2:jpjm1) = hv_0(2:jpim1,2:jpjm1) + zsshv_a(2:jpim1,2:jpjm1) 
     687            hvr_e(2:jpim1,2:jpjm1) = ssvmask(2:jpim1,2:jpjm1) / ( hv_e(2:jpim1,2:jpjm1) + 1._wp - ssvmask(2:jpim1,2:jpjm1) ) 
    688688            CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  & 
    689                  &                         , hu_e , 'U',  1._wp, hv_e , 'V',  1._wp  & 
    690                  &                         , hur_e, 'U',  1._wp, hvr_e, 'V',  1._wp  ) 
    691             ! 
     689                 &                         , hu_e , 'U', -1._wp, hv_e , 'V', -1._wp  & 
     690                 &                         , hur_e, 'U', -1._wp, hvr_e, 'V', -1._wp  ) 
     691         ELSE 
     692            CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  ) 
    692693         ELSE                                            !* domain lateral boundary 
    693694            CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  ) 
    694695            ! 
    695696         ENDIF 
     697         ! 
    696698         ! 
    697699         !                                                 ! open boundaries 
Note: See TracChangeset for help on using the changeset viewer.