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 10874 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynadv_ubs.F90 – NEMO

Ignore:
Timestamp:
2019-04-15T15:57:37+02:00 (5 years ago)
Author:
davestorkey
Message:

branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Revert all changes so far in preparation for implementation of new design.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynadv_ubs.F90

    r10802 r10874  
    4141CONTAINS 
    4242 
    43    SUBROUTINE dyn_adv_ubs( kt, ktlev1, ktlev2, pu_rhs, pv_rhs ) 
     43   SUBROUTINE dyn_adv_ubs( kt ) 
    4444      !!---------------------------------------------------------------------- 
    4545      !!                  ***  ROUTINE dyn_adv_ubs  *** 
     
    6464      !!      gamma1=1/3 and gamma2=1/32. 
    6565      !! 
    66       !! ** Action : - (pu_rhs,pv_rhs) updated with the 3D advective momentum trends 
     66      !! ** Action : - (ua,va) updated with the 3D advective momentum trends 
    6767      !! 
    6868      !! Reference : Shchepetkin & McWilliams, 2005, Ocean Modelling.  
    6969      !!---------------------------------------------------------------------- 
    70       INTEGER, INTENT(in) ::   kt               ! ocean time-step index 
    71       INTEGER, INTENT(in) ::   ktlev1, ktlev2   ! time level indices for source terms 
    72       REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pu_rhs, pv_rhs ! momentum trends 
     70      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    7371      ! 
    7472      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     
    9795      ! 
    9896      IF( l_trddyn ) THEN           ! trends: store the input trends 
    99          zfu_uw(:,:,:) = pu_rhs(:,:,:) 
    100          zfv_vw(:,:,:) = pv_rhs(:,:,:) 
     97         zfu_uw(:,:,:) = ua(:,:,:) 
     98         zfv_vw(:,:,:) = va(:,:,:) 
    10199      ENDIF 
    102100      !                                      ! =========================== ! 
     
    104102         !                                   ! =========================== ! 
    105103         !                                         ! horizontal volume fluxes 
    106          zfu(:,:,jk) = e2u(:,:) * e3u(:,:,jk,ktlev2) * uu(:,:,jk,ktlev2) 
    107          zfv(:,:,jk) = e1v(:,:) * e3v(:,:,jk,ktlev2) * vv(:,:,jk,ktlev2) 
     104         zfu(:,:,jk) = e2u(:,:) * e3u_n(:,:,jk) * un(:,:,jk) 
     105         zfv(:,:,jk) = e1v(:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 
    108106         !             
    109107         DO jj = 2, jpjm1                          ! laplacian 
    110108            DO ji = fs_2, fs_jpim1   ! vector opt. 
    111                zlu_uu(ji,jj,jk,1) = ( uu (ji+1,jj  ,jk,ktlev1) - 2.*uu (ji,jj,jk,ktlev1) + uu (ji-1,jj  ,jk,ktlev1) ) * umask(ji,jj,jk) 
    112                zlv_vv(ji,jj,jk,1) = ( vv (ji  ,jj+1,jk,ktlev1) - 2.*vv (ji,jj,jk,ktlev1) + vv (ji  ,jj-1,jk,ktlev1) ) * vmask(ji,jj,jk) 
    113                zlu_uv(ji,jj,jk,1) = ( uu (ji  ,jj+1,jk,ktlev1) - uu (ji  ,jj  ,jk,ktlev1) ) * fmask(ji  ,jj  ,jk)   & 
    114                   &               - ( uu (ji  ,jj  ,jk,ktlev1) - uu (ji  ,jj-1,jk,ktlev1) ) * fmask(ji  ,jj-1,jk) 
    115                zlv_vu(ji,jj,jk,1) = ( vv (ji+1,jj  ,jk,ktlev1) - vv (ji  ,jj  ,jk,ktlev1) ) * fmask(ji  ,jj  ,jk)   & 
    116                   &               - ( vv (ji  ,jj  ,jk,ktlev1) - vv (ji-1,jj  ,jk,ktlev1) ) * fmask(ji-1,jj  ,jk) 
     109               zlu_uu(ji,jj,jk,1) = ( ub (ji+1,jj  ,jk) - 2.*ub (ji,jj,jk) + ub (ji-1,jj  ,jk) ) * umask(ji,jj,jk) 
     110               zlv_vv(ji,jj,jk,1) = ( vb (ji  ,jj+1,jk) - 2.*vb (ji,jj,jk) + vb (ji  ,jj-1,jk) ) * vmask(ji,jj,jk) 
     111               zlu_uv(ji,jj,jk,1) = ( ub (ji  ,jj+1,jk) - ub (ji  ,jj  ,jk) ) * fmask(ji  ,jj  ,jk)   & 
     112                  &               - ( ub (ji  ,jj  ,jk) - ub (ji  ,jj-1,jk) ) * fmask(ji  ,jj-1,jk) 
     113               zlv_vu(ji,jj,jk,1) = ( vb (ji+1,jj  ,jk) - vb (ji  ,jj  ,jk) ) * fmask(ji  ,jj  ,jk)   & 
     114                  &               - ( vb (ji  ,jj  ,jk) - vb (ji-1,jj  ,jk) ) * fmask(ji-1,jj  ,jk) 
    117115               ! 
    118116               zlu_uu(ji,jj,jk,2) = ( zfu(ji+1,jj  ,jk) - 2.*zfu(ji,jj,jk) + zfu(ji-1,jj  ,jk) ) * umask(ji,jj,jk) 
     
    134132      DO jk = 1, jpkm1                       ! ====================== ! 
    135133         !                                         ! horizontal volume fluxes 
    136          zfu(:,:,jk) = 0.25_wp * e2u(:,:) * e3u(:,:,jk,ktlev2) * uu(:,:,jk,ktlev2) 
    137          zfv(:,:,jk) = 0.25_wp * e1v(:,:) * e3v(:,:,jk,ktlev2) * vv(:,:,jk,ktlev2) 
     134         zfu(:,:,jk) = 0.25_wp * e2u(:,:) * e3u_n(:,:,jk) * un(:,:,jk) 
     135         zfv(:,:,jk) = 0.25_wp * e1v(:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 
    138136         ! 
    139137         DO jj = 1, jpjm1                          ! horizontal momentum fluxes at T- and F-point 
    140138            DO ji = 1, fs_jpim1   ! vector opt. 
    141                zui = ( uu(ji,jj,jk,ktlev2) + uu(ji+1,jj  ,jk,ktlev2) ) 
    142                zvj = ( vv(ji,jj,jk,ktlev2) + vv(ji  ,jj+1,jk,ktlev2) ) 
     139               zui = ( un(ji,jj,jk) + un(ji+1,jj  ,jk) ) 
     140               zvj = ( vn(ji,jj,jk) + vn(ji  ,jj+1,jk) ) 
    143141               ! 
    144142               IF( zui > 0 ) THEN   ;   zl_u = zlu_uu(ji  ,jj,jk,1) 
     
    166164               ! 
    167165               zfv_f(ji  ,jj  ,jk) = ( zfvi - gamma2 * ( zlv_vu(ji,jj,jk,2) + zlv_vu(ji+1,jj  ,jk,2) )  )   & 
    168                   &                * ( uu(ji,jj,jk,ktlev2) + uu(ji  ,jj+1,jk,ktlev2) - gamma1 * zl_u ) 
     166                  &                * ( un(ji,jj,jk) + un(ji  ,jj+1,jk) - gamma1 * zl_u ) 
    169167               zfu_f(ji  ,jj  ,jk) = ( zfuj - gamma2 * ( zlu_uv(ji,jj,jk,2) + zlu_uv(ji  ,jj+1,jk,2) )  )   & 
    170                   &                * ( vv(ji,jj,jk,ktlev2) + vv(ji+1,jj  ,jk,ktlev2) - gamma1 * zl_v ) 
     168                  &                * ( vn(ji,jj,jk) + vn(ji+1,jj  ,jk) - gamma1 * zl_v ) 
    171169            END DO 
    172170         END DO 
    173171         DO jj = 2, jpjm1                          ! divergence of horizontal momentum fluxes 
    174172            DO ji = fs_2, fs_jpim1   ! vector opt. 
    175                pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) - (  zfu_t(ji+1,jj,jk) - zfu_t(ji,jj  ,jk)    & 
    176                   &                           + zfv_f(ji  ,jj,jk) - zfv_f(ji,jj-1,jk)  ) * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,ktlev2) 
    177                pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) - (  zfu_f(ji,jj  ,jk) - zfu_f(ji-1,jj,jk)    & 
    178                   &                           + zfv_t(ji,jj+1,jk) - zfv_t(ji  ,jj,jk)  ) * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,ktlev2) 
     173               ua(ji,jj,jk) = ua(ji,jj,jk) - (  zfu_t(ji+1,jj,jk) - zfu_t(ji,jj  ,jk)    & 
     174                  &                           + zfv_f(ji  ,jj,jk) - zfv_f(ji,jj-1,jk)  ) * r1_e1e2u(ji,jj) / e3u_n(ji,jj,jk) 
     175               va(ji,jj,jk) = va(ji,jj,jk) - (  zfu_f(ji,jj  ,jk) - zfu_f(ji-1,jj,jk)    & 
     176                  &                           + zfv_t(ji,jj+1,jk) - zfv_t(ji  ,jj,jk)  ) * r1_e1e2v(ji,jj) / e3v_n(ji,jj,jk) 
    179177            END DO 
    180178         END DO 
    181179      END DO 
    182180      IF( l_trddyn ) THEN                          ! trends: send trends to trddyn for diagnostic 
    183          zfu_uw(:,:,:) = pu_rhs(:,:,:) - zfu_uw(:,:,:) 
    184          zfv_vw(:,:,:) = pv_rhs(:,:,:) - zfv_vw(:,:,:) 
     181         zfu_uw(:,:,:) = ua(:,:,:) - zfu_uw(:,:,:) 
     182         zfv_vw(:,:,:) = va(:,:,:) - zfv_vw(:,:,:) 
    185183         CALL trd_dyn( zfu_uw, zfv_vw, jpdyn_keg, kt ) 
    186          zfu_t(:,:,:) = pu_rhs(:,:,:) 
    187          zfv_t(:,:,:) = pv_rhs(:,:,:) 
     184         zfu_t(:,:,:) = ua(:,:,:) 
     185         zfv_t(:,:,:) = va(:,:,:) 
    188186      ENDIF 
    189187      !                                      ! ==================== ! 
     
    201199         DO jj = 2, jpjm1 
    202200            DO ji = fs_2, fs_jpim1 
    203                zfu_uw(ji,jj,1) = 0.5_wp * ( e1e2t(ji,jj) * ww(ji,jj,1) + e1e2t(ji+1,jj) * ww(ji+1,jj,1) ) * uu(ji,jj,1,ktlev2) 
    204                zfv_vw(ji,jj,1) = 0.5_wp * ( e1e2t(ji,jj) * ww(ji,jj,1) + e1e2t(ji,jj+1) * ww(ji,jj+1,1) ) * vv(ji,jj,1,ktlev2) 
     201               zfu_uw(ji,jj,1) = 0.5_wp * ( e1e2t(ji,jj) * wn(ji,jj,1) + e1e2t(ji+1,jj) * wn(ji+1,jj,1) ) * un(ji,jj,1) 
     202               zfv_vw(ji,jj,1) = 0.5_wp * ( e1e2t(ji,jj) * wn(ji,jj,1) + e1e2t(ji,jj+1) * wn(ji,jj+1,1) ) * vn(ji,jj,1) 
    205203            END DO 
    206204         END DO 
     
    209207         DO jj = 2, jpj 
    210208            DO ji = 2, jpi 
    211                zfw(ji,jj,jk) = 0.25_wp * e1e2t(ji,jj) * ww(ji,jj,jk) 
     209               zfw(ji,jj,jk) = 0.25_wp * e1e2t(ji,jj) * wn(ji,jj,jk) 
    212210            END DO 
    213211         END DO 
    214212         DO jj = 2, jpjm1 
    215213            DO ji = fs_2, fs_jpim1   ! vector opt. 
    216                zfu_uw(ji,jj,jk) = ( zfw(ji,jj,jk)+ zfw(ji+1,jj,jk) ) * ( uu(ji,jj,jk,ktlev2) + uu(ji,jj,jk-1,ktlev2) ) 
    217                zfv_vw(ji,jj,jk) = ( zfw(ji,jj,jk)+ zfw(ji,jj+1,jk) ) * ( vv(ji,jj,jk,ktlev2) + vv(ji,jj,jk-1,ktlev2) ) 
     214               zfu_uw(ji,jj,jk) = ( zfw(ji,jj,jk)+ zfw(ji+1,jj,jk) ) * ( un(ji,jj,jk) + un(ji,jj,jk-1) ) 
     215               zfv_vw(ji,jj,jk) = ( zfw(ji,jj,jk)+ zfw(ji,jj+1,jk) ) * ( vn(ji,jj,jk) + vn(ji,jj,jk-1) ) 
    218216            END DO 
    219217         END DO 
     
    222220         DO jj = 2, jpjm1 
    223221            DO ji = fs_2, fs_jpim1   ! vector opt. 
    224                pu_rhs(ji,jj,jk) =  pu_rhs(ji,jj,jk) - ( zfu_uw(ji,jj,jk) - zfu_uw(ji,jj,jk+1) ) * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,ktlev2) 
    225                pv_rhs(ji,jj,jk) =  pv_rhs(ji,jj,jk) - ( zfv_vw(ji,jj,jk) - zfv_vw(ji,jj,jk+1) ) * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,ktlev2) 
     222               ua(ji,jj,jk) =  ua(ji,jj,jk) - ( zfu_uw(ji,jj,jk) - zfu_uw(ji,jj,jk+1) ) * r1_e1e2u(ji,jj) / e3u_n(ji,jj,jk) 
     223               va(ji,jj,jk) =  va(ji,jj,jk) - ( zfv_vw(ji,jj,jk) - zfv_vw(ji,jj,jk+1) ) * r1_e1e2v(ji,jj) / e3v_n(ji,jj,jk) 
    226224            END DO 
    227225         END DO 
     
    229227      ! 
    230228      IF( l_trddyn ) THEN                       ! save the vertical advection trend for diagnostic 
    231          zfu_t(:,:,:) = pu_rhs(:,:,:) - zfu_t(:,:,:) 
    232          zfv_t(:,:,:) = pv_rhs(:,:,:) - zfv_t(:,:,:) 
     229         zfu_t(:,:,:) = ua(:,:,:) - zfu_t(:,:,:) 
     230         zfv_t(:,:,:) = va(:,:,:) - zfv_t(:,:,:) 
    233231         CALL trd_dyn( zfu_t, zfv_t, jpdyn_zad, kt ) 
    234232      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.