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 14037 for NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/src/OCE/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2020-12-03T12:20:38+01:00 (3 years ago)
Author:
ayoung
Message:

Updated to trunk at 14020. Sette tests passed with change of results for configurations with non-linear ssh. Ticket #2506.

Location:
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG

    • Property svn:externals
      •  

        old new  
        88 
        99# SETTE 
        10 ^/utils/CI/sette@13292        sette 
         10^/utils/CI/sette_wave@13990         sette 
  • NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/src/OCE/DYN/dynspg_ts.F90

    r13363 r14037  
    267267         &                                                                          zu_trd, zv_trd   )   ! ==>> out 
    268268      ! 
    269       DO_2D( 0, 0, 0, 0 ) 
     269      DO_2D( 0, 0, 0, 0 )                          ! Remove coriolis term (and possibly spg) from barotropic trend 
    270270          zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * ssumask(ji,jj) 
    271271          zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * ssvmask(ji,jj) 
     
    464464            ! 
    465465            !                          ! ocean u- and v-depth at mid-step   (separate DO-loops remove the need of a lbc_lnk) 
    466             DO_2D( 1, 1, 1, 0 ) 
     466            DO_2D( 1, 1, 1, 0 )   ! not jpi-column 
    467467               zhup2_e(ji,jj) = hu_0(ji,jj) + r1_2 * r1_e1e2u(ji,jj)                        & 
    468468                    &                              * (  e1e2t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
    469469                    &                                 + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj)  ) * ssumask(ji,jj) 
    470470            END_2D 
    471             DO_2D( 1, 0, 1, 1 ) 
     471            DO_2D( 1, 0, 1, 1 )   ! not jpj-row 
    472472               zhvp2_e(ji,jj) = hv_0(ji,jj) + r1_2 * r1_e1e2v(ji,jj)                        & 
    473473                    &                              * (  e1e2t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
     
    889889         !                                   ! --------------- 
    890890         IF( ln_rstart .AND. ln_bt_fw .AND. (.NOT.l_1st_euler) ) THEN    !* Read the restart file 
    891             CALL iom_get( numror, jpdom_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    892             CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios )  
    893             CALL iom_get( numror, jpdom_auto, 'un_bf'  , un_bf  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    894             CALL iom_get( numror, jpdom_auto, 'vn_bf'  , vn_bf  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios )  
     891            CALL iom_get( numror, jpdom_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp )    
     892            CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp )  
     893            CALL iom_get( numror, jpdom_auto, 'un_bf'  , un_bf  (:,:), cd_type = 'U', psgn = -1._wp )    
     894            CALL iom_get( numror, jpdom_auto, 'vn_bf'  , vn_bf  (:,:), cd_type = 'V', psgn = -1._wp )  
    895895            IF( .NOT.ln_bt_av ) THEN 
    896                CALL iom_get( numror, jpdom_auto, 'sshbb_e'  , sshbb_e(:,:), cd_type = 'T', psgn =  1._wp, ldxios = lrxios )    
    897                CALL iom_get( numror, jpdom_auto, 'ubb_e'    ,   ubb_e(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    898                CALL iom_get( numror, jpdom_auto, 'vbb_e'    ,   vbb_e(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
    899                CALL iom_get( numror, jpdom_auto, 'sshb_e'   ,  sshb_e(:,:), cd_type = 'T', psgn =  1._wp, ldxios = lrxios )  
    900                CALL iom_get( numror, jpdom_auto, 'ub_e'     ,    ub_e(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    901                CALL iom_get( numror, jpdom_auto, 'vb_e'     ,    vb_e(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
     896               CALL iom_get( numror, jpdom_auto, 'sshbb_e'  , sshbb_e(:,:), cd_type = 'T', psgn =  1._wp )    
     897               CALL iom_get( numror, jpdom_auto, 'ubb_e'    ,   ubb_e(:,:), cd_type = 'U', psgn = -1._wp )    
     898               CALL iom_get( numror, jpdom_auto, 'vbb_e'    ,   vbb_e(:,:), cd_type = 'V', psgn = -1._wp ) 
     899               CALL iom_get( numror, jpdom_auto, 'sshb_e'   ,  sshb_e(:,:), cd_type = 'T', psgn =  1._wp )  
     900               CALL iom_get( numror, jpdom_auto, 'ub_e'     ,    ub_e(:,:), cd_type = 'U', psgn = -1._wp )    
     901               CALL iom_get( numror, jpdom_auto, 'vb_e'     ,    vb_e(:,:), cd_type = 'V', psgn = -1._wp ) 
    902902            ENDIF 
    903903#if defined key_agrif 
    904904            ! Read time integrated fluxes 
    905905            IF ( .NOT.Agrif_Root() ) THEN 
    906                CALL iom_get( numror, jpdom_auto, 'ub2_i_b'  , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    907                CALL iom_get( numror, jpdom_auto, 'vb2_i_b'  , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
     906               CALL iom_get( numror, jpdom_auto, 'ub2_i_b'  , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp )    
     907               CALL iom_get( numror, jpdom_auto, 'vb2_i_b'  , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp ) 
     908            ELSE 
     909               ub2_i_b(:,:) = 0._wp   ;   vb2_i_b(:,:) = 0._wp   ! used in the 1st update of agrif 
    908910            ENDIF 
    909911#endif 
     
    911913            IF(lwp) WRITE(numout,*) 
    912914            IF(lwp) WRITE(numout,*) '   ==>>>   start from rest: set barotropic values to 0' 
    913             ub2_b (:,:) = 0._wp   ;   vb2_b (:,:) = 0._wp   ! used in the 1st interpol of agrif 
    914             un_adv(:,:) = 0._wp   ;   vn_adv(:,:) = 0._wp   ! used in the 1st interpol of agrif 
    915             un_bf (:,:) = 0._wp   ;   vn_bf (:,:) = 0._wp   ! used in the 1st update   of agrif 
     915            ub2_b  (:,:) = 0._wp   ;   vb2_b (:,:) = 0._wp   ! used in the 1st interpol of agrif 
     916            un_adv (:,:) = 0._wp   ;   vn_adv (:,:) = 0._wp   ! used in the 1st interpol of agrif 
     917            un_bf  (:,:) = 0._wp   ;   vn_bf (:,:) = 0._wp   ! used in the 1st update   of agrif 
    916918#if defined key_agrif 
    917             IF ( .NOT.Agrif_Root() ) THEN 
    918                ub2_i_b(:,:) = 0._wp   ;   vb2_i_b(:,:) = 0._wp   ! used in the 1st update of agrif 
    919             ENDIF 
     919            ub2_i_b(:,:) = 0._wp   ;   vb2_i_b(:,:) = 0._wp   ! used in the 1st update of agrif 
    920920#endif 
    921921         ENDIF 
     
    924924         !                                   ! ------------------- 
    925925         IF(lwp) WRITE(numout,*) '---- ts_rst ----' 
    926          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    927          CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:), ldxios = lwxios ) 
    928          CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:), ldxios = lwxios ) 
    929          CALL iom_rstput( kt, nitrst, numrow, 'un_bf'   , un_bf  (:,:), ldxios = lwxios ) 
    930          CALL iom_rstput( kt, nitrst, numrow, 'vn_bf'   , vn_bf  (:,:), ldxios = lwxios ) 
     926         CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:) ) 
     927         CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:) ) 
     928         CALL iom_rstput( kt, nitrst, numrow, 'un_bf'   , un_bf  (:,:) ) 
     929         CALL iom_rstput( kt, nitrst, numrow, 'vn_bf'   , vn_bf  (:,:) ) 
    931930         ! 
    932931         IF (.NOT.ln_bt_av) THEN 
    933             CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:), ldxios = lwxios )  
    934             CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:), ldxios = lwxios ) 
    935             CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:), ldxios = lwxios ) 
    936             CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:), ldxios = lwxios ) 
    937             CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:), ldxios = lwxios ) 
    938             CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:), ldxios = lwxios ) 
     932            CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:) )  
     933            CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:) ) 
     934            CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:) ) 
     935            CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:) ) 
     936            CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:) ) 
     937            CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:) ) 
    939938         ENDIF 
    940939#if defined key_agrif 
    941940         ! Save time integrated fluxes 
    942941         IF ( .NOT.Agrif_Root() ) THEN 
    943             CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:), ldxios = lwxios ) 
    944             CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:), ldxios = lwxios ) 
     942            CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:) ) 
     943            CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:) ) 
    945944         ENDIF 
    946945#endif 
    947          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    948946      ENDIF 
    949947      ! 
     
    10371035      !                             ! read restart when needed 
    10381036      CALL ts_rst( nit000, 'READ' ) 
    1039       ! 
    1040       IF( lwxios ) THEN 
    1041 ! define variables in restart file when writing with XIOS 
    1042          CALL iom_set_rstw_var_active('ub2_b') 
    1043          CALL iom_set_rstw_var_active('vb2_b') 
    1044          CALL iom_set_rstw_var_active('un_bf') 
    1045          CALL iom_set_rstw_var_active('vn_bf') 
    1046          ! 
    1047          IF (.NOT.ln_bt_av) THEN 
    1048             CALL iom_set_rstw_var_active('sshbb_e') 
    1049             CALL iom_set_rstw_var_active('ubb_e') 
    1050             CALL iom_set_rstw_var_active('vbb_e') 
    1051             CALL iom_set_rstw_var_active('sshb_e') 
    1052             CALL iom_set_rstw_var_active('ub_e') 
    1053             CALL iom_set_rstw_var_active('vb_e') 
    1054          ENDIF 
    1055 #if defined key_agrif 
    1056          ! Save time integrated fluxes 
    1057          IF ( .NOT.Agrif_Root() ) THEN 
    1058             CALL iom_set_rstw_var_active('ub2_i_b') 
    1059             CALL iom_set_rstw_var_active('vb2_i_b') 
    1060          ENDIF 
    1061 #endif 
    1062       ENDIF 
    10631037      ! 
    10641038   END SUBROUTINE dyn_spg_ts_init 
     
    12971271      !!---------------------------------------------------------------------- 
    12981272      ! 
    1299       DO_2D( 1, 1, 1, 0 ) 
     1273      DO_2D( 1, 1, 1, 0 )   ! not jpi-column 
    13001274         IF ( phU(ji,jj) > 0._wp ) THEN   ;   pUmsk(ji,jj) = pTmsk(ji  ,jj)  
    13011275         ELSE                             ;   pUmsk(ji,jj) = pTmsk(ji+1,jj)   
     
    13051279      END_2D 
    13061280      ! 
    1307       DO_2D( 1, 0, 1, 1 ) 
     1281      DO_2D( 1, 0, 1, 1 )   ! not jpj-row 
    13081282         IF ( phV(ji,jj) > 0._wp ) THEN   ;   pVmsk(ji,jj) = pTmsk(ji,jj  ) 
    13091283         ELSE                             ;   pVmsk(ji,jj) = pTmsk(ji,jj+1)   
     
    13941368      !                    !==  Set the barotropic drag coef.  ==! 
    13951369      ! 
    1396       IF( ln_isfcav ) THEN          ! top+bottom friction (ocean cavities) 
     1370      IF( ln_isfcav.OR.ln_drgice_imp ) THEN          ! top+bottom friction (ocean cavities) 
    13971371          
    13981372         DO_2D( 0, 0, 0, 0 ) 
     
    14451419      !                    !==  TOP stress contribution from baroclinic velocities  ==!   (no W/D case) 
    14461420      ! 
    1447       IF( ln_isfcav ) THEN 
     1421      IF( ln_isfcav.OR.ln_drgice_imp ) THEN 
    14481422         ! 
    14491423         IF( ln_bt_fw ) THEN                ! FORWARD integration: use NOW top baroclinic velocity 
Note: See TracChangeset for help on using the changeset viewer.