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 10893 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src – NEMO

Ignore:
Timestamp:
2019-04-25T12:05:42+02:00 (5 years ago)
Author:
davestorkey
Message:

branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : update with Gurvan's stylistic modifications.

Location:
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src
Files:
12 edited

Legend:

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

    r10877 r10893  
    7575      SELECT CASE( n_dynadv )    !==  compute advection trend and add it to general trend  ==! 
    7676      CASE( np_VEC_c2  )      
    77          CALL dyn_keg     ( kt, nn_dynkeg, Kmm, puu, pvv, Krhs )    ! vector form : horizontal gradient of kinetic energy 
    78          CALL dyn_zad     ( kt,            Kmm, puu, pvv, Krhs )    ! vector form : vertical advection 
     77         CALL dyn_keg     ( kt, nn_dynkeg,      Kmm, puu, pvv, Krhs )    ! vector form : horizontal gradient of kinetic energy 
     78         CALL dyn_zad     ( kt,                 Kmm, puu, pvv, Krhs )    ! vector form : vertical advection 
    7979      CASE( np_FLX_c2  )  
    80          CALL dyn_adv_cen2( kt,      Kmm, puu, pvv, Krhs )          ! 2nd order centered scheme 
     80         CALL dyn_adv_cen2( kt,                 Kmm, puu, pvv, Krhs )    ! 2nd order centered scheme 
    8181      CASE( np_FLX_ubs )    
    82          CALL dyn_adv_ubs ( kt, Kbb, Kmm, puu, pvv, Krhs )          ! 3rd order UBS      scheme (UP3) 
     82         CALL dyn_adv_ubs ( kt,            Kbb, Kmm, puu, pvv, Krhs )    ! 3rd order UBS      scheme (UP3) 
    8383      END SELECT 
    8484      ! 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynkeg.F90

    r10877 r10893  
    5757      !!              * kscheme = nkeg_HW : Hollingsworth correction following 
    5858      !!      Arakawa (2001). The now horizontal kinetic energy is given by: 
    59       !!         zhke = 1/6 [ mi-1(  2 * un^2 + ((puu(j+1,Kmm)+puu(j-1,Kmm))/2)^2  ) 
    60       !!                    + mj-1(  2 * vn^2 + ((pvv(i+1,Kmm)+pvv(i-1,Kmm))/2)^2  ) ] 
     59      !!         zhke = 1/6 [ mi-1(  2 * un^2 + ((u(j+1)+u(j-1))/2)^2  ) 
     60      !!                    + mj-1(  2 * vn^2 + ((v(i+1)+v(i-1))/2)^2  ) ] 
    6161      !!       
    6262      !!      Take its horizontal gradient and add it to the general momentum 
    63       !!      trend (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)). 
    64       !!         puu(:,:,:,Krhs) = puu(:,:,:,Krhs) - 1/e1u di[ zhke ] 
    65       !!         pvv(:,:,:,Krhs) = pvv(:,:,:,Krhs) - 1/e2v dj[ zhke ] 
     63      !!      trend. 
     64      !!         u(rhs) = u(rhs) - 1/e1u di[ zhke ] 
     65      !!         v(rhs) = v(rhs) - 1/e2v dj[ zhke ] 
    6666      !! 
    6767      !! ** Action : - Update the (puu(:,:,:,Krhs), pvv(:,:,:,Krhs)) with the hor. ke gradient trend 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynvor.F90

    r10877 r10893  
    205205      !!       where rvor is the relative vorticity at f-point 
    206206      !! 
    207       !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) with the now vorticity term trend 
     207      !! ** Action : - Update (pu_rhs,pv_rhs) with the now vorticity term trend 
    208208      !!---------------------------------------------------------------------- 
    209209      INTEGER                         , INTENT(in   ) ::   kt               ! ocean time-step index 
     
    325325 
    326326 
    327    SUBROUTINE vor_ene( kt, Kmm, kvor, pu_mm, pv_mm, pu_rhs, pv_rhs ) 
     327   SUBROUTINE vor_ene( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 
    328328      !!---------------------------------------------------------------------- 
    329329      !!                  ***  ROUTINE vor_ene  *** 
     
    341341      !!       where rvor is the relative vorticity 
    342342      !! 
    343       !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) with the now vorticity term trend 
     343      !! ** Action : - Update (pu_rhs,pv_rhs) with the now vorticity term trend 
    344344      !! 
    345345      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
     
    348348      INTEGER                         , INTENT(in   ) ::   Kmm              ! ocean time level index 
    349349      INTEGER                         , INTENT(in   ) ::   kvor        ! total, planetary, relative, or metric 
    350       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu_mm, pv_mm    ! now velocities 
     350      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu, pv    ! now velocities 
    351351      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu_rhs, pv_rhs    ! total v-trend 
    352352      ! 
     
    372372            DO jj = 1, jpjm1 
    373373               DO ji = 1, fs_jpim1   ! vector opt. 
    374                   zwz(ji,jj) = (  e2v(ji+1,jj  ) * pv_mm(ji+1,jj  ,jk) - e2v(ji,jj) * pv_mm(ji,jj,jk)    & 
    375                      &          - e1u(ji  ,jj+1) * pu_mm(ji  ,jj+1,jk) + e1u(ji,jj) * pu_mm(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
     374                  zwz(ji,jj) = (  e2v(ji+1,jj  ) * pv(ji+1,jj  ,jk) - e2v(ji,jj) * pv(ji,jj,jk)    & 
     375                     &          - e1u(ji  ,jj+1) * pu(ji  ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    376376               END DO 
    377377            END DO 
     
    379379            DO jj = 1, jpjm1 
    380380               DO ji = 1, fs_jpim1   ! vector opt. 
    381                   zwz(ji,jj) = ( pv_mm(ji+1,jj  ,jk) + pv_mm(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
    382                      &       - ( pu_mm(ji  ,jj+1,jk) + pu_mm(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
     381                  zwz(ji,jj) = ( pv(ji+1,jj  ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
     382                     &       - ( pu(ji  ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
    383383               END DO 
    384384            END DO 
     
    386386            DO jj = 1, jpjm1 
    387387               DO ji = 1, fs_jpim1   ! vector opt. 
    388                   zwz(ji,jj) = ff_f(ji,jj) + (  e2v(ji+1,jj) * pv_mm(ji+1,jj,jk) - e2v(ji,jj) * pv_mm(ji,jj,jk)      & 
    389                      &                        - e1u(ji,jj+1) * pu_mm(ji,jj+1,jk) + e1u(ji,jj) * pu_mm(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
     388                  zwz(ji,jj) = ff_f(ji,jj) + (  e2v(ji+1,jj) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk)      & 
     389                     &                        - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    390390               END DO 
    391391            END DO 
     
    393393            DO jj = 1, jpjm1 
    394394               DO ji = 1, fs_jpim1   ! vector opt. 
    395                   zwz(ji,jj) = ff_f(ji,jj) + ( pv_mm(ji+1,jj  ,jk) + pv_mm(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
    396                      &                     - ( pu_mm(ji  ,jj+1,jk) + pu_mm(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
     395                  zwz(ji,jj) = ff_f(ji,jj) + ( pv(ji+1,jj  ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
     396                     &                     - ( pu(ji  ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
    397397               END DO 
    398398            END DO 
     
    411411         IF( ln_sco ) THEN 
    412412            zwz(:,:) = zwz(:,:) / e3f(:,:,jk) 
    413             zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu_mm(:,:,jk) 
    414             zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv_mm(:,:,jk) 
     413            zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
     414            zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
    415415         ELSE 
    416             zwx(:,:) = e2u(:,:) * pu_mm(:,:,jk) 
    417             zwy(:,:) = e1v(:,:) * pv_mm(:,:,jk) 
     416            zwx(:,:) = e2u(:,:) * pu(:,:,jk) 
     417            zwy(:,:) = e1v(:,:) * pv(:,:,jk) 
    418418         ENDIF 
    419419         !                                   !==  compute and add the vorticity term trend  =! 
     
    434434 
    435435 
    436    SUBROUTINE vor_ens( kt, Kmm, kvor, pu_mm, pv_mm, pu_rhs, pv_rhs ) 
     436   SUBROUTINE vor_ens( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 
    437437      !!---------------------------------------------------------------------- 
    438438      !!                ***  ROUTINE vor_ens  *** 
     
    447447      !!          voru = 1/e1u  mj-1[ (rvor+f)/e3f ]  mj-1[ mi(e1v*e3v pvv(:,:,:,Kmm)) ] 
    448448      !!          vorv = 1/e2v  mi-1[ (rvor+f)/e3f ]  mi-1[ mj(e2u*e3u puu(:,:,:,Kmm)) ] 
    449       !!      Add this trend to the general momentum trend (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)): 
    450       !!          (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) = (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) + ( voru , vorv ) 
    451       !! 
    452       !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) arrays with the now vorticity term trend 
     449      !!      Add this trend to the general momentum trend: 
     450      !!          (u(rhs),v(Krhs)) = (u(rhs),v(Krhs)) + ( voru , vorv ) 
     451      !! 
     452      !! ** Action : - Update (pu_rhs,pv_rhs)) arrays with the now vorticity term trend 
    453453      !! 
    454454      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
     
    457457      INTEGER                         , INTENT(in   ) ::   Kmm              ! ocean time level index 
    458458      INTEGER                         , INTENT(in   ) ::   kvor        ! total, planetary, relative, or metric 
    459       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu_mm, pv_mm    ! now velocities 
     459      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu, pv    ! now velocities 
    460460      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu_rhs, pv_rhs    ! total v-trend 
    461461      ! 
     
    480480            DO jj = 1, jpjm1 
    481481               DO ji = 1, fs_jpim1   ! vector opt. 
    482                   zwz(ji,jj) = (  e2v(ji+1,jj  ) * pv_mm(ji+1,jj  ,jk) - e2v(ji,jj) * pv_mm(ji,jj,jk)    & 
    483                      &          - e1u(ji  ,jj+1) * pu_mm(ji  ,jj+1,jk) + e1u(ji,jj) * pu_mm(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
     482                  zwz(ji,jj) = (  e2v(ji+1,jj  ) * pv(ji+1,jj  ,jk) - e2v(ji,jj) * pv(ji,jj,jk)    & 
     483                     &          - e1u(ji  ,jj+1) * pu(ji  ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    484484               END DO 
    485485            END DO 
     
    487487            DO jj = 1, jpjm1 
    488488               DO ji = 1, fs_jpim1   ! vector opt. 
    489                   zwz(ji,jj) = ( pv_mm(ji+1,jj  ,jk) + pv_mm(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
    490                      &       - ( pu_mm(ji  ,jj+1,jk) + pu_mm(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
     489                  zwz(ji,jj) = ( pv(ji+1,jj  ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
     490                     &       - ( pu(ji  ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
    491491               END DO 
    492492            END DO 
     
    494494            DO jj = 1, jpjm1 
    495495               DO ji = 1, fs_jpim1   ! vector opt. 
    496                   zwz(ji,jj) = ff_f(ji,jj) + (  e2v(ji+1,jj  ) * pv_mm(ji+1,jj  ,jk) - e2v(ji,jj) * pv_mm(ji,jj,jk)  & 
    497                      &                        - e1u(ji  ,jj+1) * pu_mm(ji  ,jj+1,jk) + e1u(ji,jj) * pu_mm(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
     496                  zwz(ji,jj) = ff_f(ji,jj) + (  e2v(ji+1,jj  ) * pv(ji+1,jj  ,jk) - e2v(ji,jj) * pv(ji,jj,jk)  & 
     497                     &                        - e1u(ji  ,jj+1) * pu(ji  ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    498498               END DO 
    499499            END DO 
     
    501501            DO jj = 1, jpjm1 
    502502               DO ji = 1, fs_jpim1   ! vector opt. 
    503                   zwz(ji,jj) = ff_f(ji,jj) + ( pv_mm(ji+1,jj  ,jk) + pv_mm(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
    504                      &                     - ( pu_mm(ji  ,jj+1,jk) + pu_mm(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
     503                  zwz(ji,jj) = ff_f(ji,jj) + ( pv(ji+1,jj  ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
     504                     &                     - ( pu(ji  ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
    505505               END DO 
    506506            END DO 
     
    519519         IF( ln_sco ) THEN                   !==  horizontal fluxes  ==! 
    520520            zwz(:,:) = zwz(:,:) / e3f(:,:,jk) 
    521             zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu_mm(:,:,jk) 
    522             zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv_mm(:,:,jk) 
     521            zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
     522            zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
    523523         ELSE 
    524             zwx(:,:) = e2u(:,:) * pu_mm(:,:,jk) 
    525             zwy(:,:) = e1v(:,:) * pv_mm(:,:,jk) 
     524            zwx(:,:) = e2u(:,:) * pu(:,:,jk) 
     525            zwy(:,:) = e1v(:,:) * pv(:,:,jk) 
    526526         ENDIF 
    527527         !                                   !==  compute and add the vorticity term trend  =! 
     
    542542 
    543543 
    544    SUBROUTINE vor_een( kt, Kmm, kvor, pu_mm, pv_mm, pu_rhs, pv_rhs ) 
     544   SUBROUTINE vor_een( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 
    545545      !!---------------------------------------------------------------------- 
    546546      !!                ***  ROUTINE vor_een  *** 
     
    553553      !!      both the horizontal kinetic energy and the potential enstrophy 
    554554      !!      when horizontal divergence is zero (see the NEMO documentation) 
    555       !!      Add this trend to the general momentum trend (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)). 
    556       !! 
    557       !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) with the now vorticity term trend 
     555      !!      Add this trend to the general momentum trend (pu_rhs,pv_rhs). 
     556      !! 
     557      !! ** Action : - Update (pu_rhs,pv_rhs) with the now vorticity term trend 
    558558      !! 
    559559      !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 
     
    562562      INTEGER                         , INTENT(in   ) ::   Kmm              ! ocean time level index 
    563563      INTEGER                         , INTENT(in   ) ::   kvor        ! total, planetary, relative, or metric 
    564       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu_mm, pv_mm    ! now velocities 
     564      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu, pv    ! now velocities 
    565565      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu_rhs, pv_rhs    ! total v-trend 
    566566      ! 
     
    619619            DO jj = 1, jpjm1 
    620620               DO ji = 1, fs_jpim1   ! vector opt. 
    621                   zwz(ji,jj,jk) = ( e2v(ji+1,jj  ) * pv_mm(ji+1,jj,jk) - e2v(ji,jj) * pv_mm(ji,jj,jk)  & 
    622                      &            - e1u(ji  ,jj+1) * pu_mm(ji,jj+1,jk) + e1u(ji,jj) * pu_mm(ji,jj,jk)  ) * r1_e1e2f(ji,jj)*z1_e3f(ji,jj) 
     621                  zwz(ji,jj,jk) = ( e2v(ji+1,jj  ) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk)  & 
     622                     &            - e1u(ji  ,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj)*z1_e3f(ji,jj) 
    623623               END DO 
    624624            END DO 
     
    626626            DO jj = 1, jpjm1 
    627627               DO ji = 1, fs_jpim1   ! vector opt. 
    628                   zwz(ji,jj,jk) = (   ( pv_mm(ji+1,jj,jk) + pv_mm(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
    629                      &              - ( pu_mm(ji,jj+1,jk) + pu_mm(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)   ) * z1_e3f(ji,jj) 
     628                  zwz(ji,jj,jk) = (   ( pv(ji+1,jj,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
     629                     &              - ( pu(ji,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)   ) * z1_e3f(ji,jj) 
    630630               END DO 
    631631            END DO 
     
    633633            DO jj = 1, jpjm1 
    634634               DO ji = 1, fs_jpim1   ! vector opt. 
    635                   zwz(ji,jj,jk) = (  ff_f(ji,jj) + (  e2v(ji+1,jj  ) * pv_mm(ji+1,jj,jk) - e2v(ji,jj) * pv_mm(ji,jj,jk)      & 
    636                      &                              - e1u(ji  ,jj+1) * pu_mm(ji,jj+1,jk) + e1u(ji,jj) * pu_mm(ji,jj,jk)  )   & 
     635                  zwz(ji,jj,jk) = (  ff_f(ji,jj) + (  e2v(ji+1,jj  ) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk)      & 
     636                     &                              - e1u(ji  ,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  )   & 
    637637                     &                           * r1_e1e2f(ji,jj)   ) * z1_e3f(ji,jj) 
    638638               END DO 
     
    641641            DO jj = 1, jpjm1 
    642642               DO ji = 1, fs_jpim1   ! vector opt. 
    643                   zwz(ji,jj,jk) = (   ff_f(ji,jj) + ( pv_mm(ji+1,jj  ,jk) + pv_mm(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
    644                      &                            - ( pu_mm(ji  ,jj+1,jk) + pu_mm(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)   ) * z1_e3f(ji,jj) 
     643                  zwz(ji,jj,jk) = (   ff_f(ji,jj) + ( pv(ji+1,jj  ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
     644                     &                            - ( pu(ji  ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)   ) * z1_e3f(ji,jj) 
    645645               END DO 
    646646            END DO 
     
    663663         ! 
    664664         !                                   !==  horizontal fluxes  ==! 
    665          zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu_mm(:,:,jk) 
    666          zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv_mm(:,:,jk) 
     665         zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
     666         zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
    667667 
    668668         !                                   !==  compute and add the vorticity term trend  =! 
     
    700700 
    701701 
    702    SUBROUTINE vor_eeT( kt, Kmm, kvor, pu_mm, pv_mm, pu_rhs, pv_rhs ) 
     702   SUBROUTINE vor_eeT( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 
    703703      !!---------------------------------------------------------------------- 
    704704      !!                ***  ROUTINE vor_eeT  *** 
     
    711711      !!      a modified version of Arakawa and Lamb (1980) scheme (see vor_een). 
    712712      !!      The change consists in  
    713       !!      Add this trend to the general momentum trend (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)). 
    714       !! 
    715       !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) with the now vorticity term trend 
     713      !!      Add this trend to the general momentum trend (pu_rhs,pv_rhs). 
     714      !! 
     715      !! ** Action : - Update (pu_rhs,pv_rhs) with the now vorticity term trend 
    716716      !! 
    717717      !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 
     
    720720      INTEGER                         , INTENT(in   ) ::   Kmm              ! ocean time level index 
    721721      INTEGER                         , INTENT(in   ) ::   kvor        ! total, planetary, relative, or metric 
    722       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu_mm, pv_mm    ! now velocities 
     722      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu, pv    ! now velocities 
    723723      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu_rhs, pv_rhs    ! total v-trend 
    724724      ! 
     
    753753            DO jj = 1, jpjm1 
    754754               DO ji = 1, fs_jpim1   ! vector opt. 
    755                   zwz(ji,jj,jk) = (  e2v(ji+1,jj  ) * pv_mm(ji+1,jj  ,jk) - e2v(ji,jj) * pv_mm(ji,jj,jk)    & 
    756                      &             - e1u(ji  ,jj+1) * pu_mm(ji  ,jj+1,jk) + e1u(ji,jj) * pu_mm(ji,jj,jk)  ) & 
     755                  zwz(ji,jj,jk) = (  e2v(ji+1,jj  ) * pv(ji+1,jj  ,jk) - e2v(ji,jj) * pv(ji,jj,jk)    & 
     756                     &             - e1u(ji  ,jj+1) * pu(ji  ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) & 
    757757                     &          * r1_e1e2f(ji,jj) 
    758758               END DO 
     
    761761            DO jj = 1, jpjm1 
    762762               DO ji = 1, fs_jpim1   ! vector opt. 
    763                   zwz(ji,jj,jk) = ( pv_mm(ji+1,jj  ,jk) + pv_mm(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
    764                      &          - ( pu_mm(ji  ,jj+1,jk) + pu_mm(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
     763                  zwz(ji,jj,jk) = ( pv(ji+1,jj  ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
     764                     &          - ( pu(ji  ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
    765765               END DO 
    766766            END DO 
     
    768768            DO jj = 1, jpjm1 
    769769               DO ji = 1, fs_jpim1   ! vector opt. 
    770                   zwz(ji,jj,jk) = (  ff_f(ji,jj) + (  e2v(ji+1,jj  ) * pv_mm(ji+1,jj  ,jk) - e2v(ji,jj) * pv_mm(ji,jj,jk)    & 
    771                      &                              - e1u(ji  ,jj+1) * pu_mm(ji  ,jj+1,jk) + e1u(ji,jj) * pu_mm(ji,jj,jk)  ) & 
     770                  zwz(ji,jj,jk) = (  ff_f(ji,jj) + (  e2v(ji+1,jj  ) * pv(ji+1,jj  ,jk) - e2v(ji,jj) * pv(ji,jj,jk)    & 
     771                     &                              - e1u(ji  ,jj+1) * pu(ji  ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) & 
    772772                     &                         * r1_e1e2f(ji,jj)    ) 
    773773               END DO 
     
    776776            DO jj = 1, jpjm1 
    777777               DO ji = 1, fs_jpim1   ! vector opt. 
    778                   zwz(ji,jj,jk) = ff_f(ji,jj) + ( pv_mm(ji+1,jj  ,jk) + pv_mm(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
    779                      &                        - ( pu_mm(ji  ,jj+1,jk) + pu_mm(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
     778                  zwz(ji,jj,jk) = ff_f(ji,jj) + ( pv(ji+1,jj  ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj)   & 
     779                     &                        - ( pu(ji  ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 
    780780               END DO 
    781781            END DO 
     
    798798 
    799799      !                                   !==  horizontal fluxes  ==! 
    800          zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu_mm(:,:,jk) 
    801          zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv_mm(:,:,jk) 
     800         zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
     801         zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
    802802 
    803803         !                                   !==  compute and add the vorticity term trend  =! 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynzad.F90

    r10877 r10893  
    4444      !! 
    4545      !! ** Method  :   The now vertical advection of momentum is given by: 
    46       !!         w dz(u) = puu(:,:,:,Krhs) + 1/(e1e2u*e3u) mk+1[ mi(e1e2t*ww) dk(puu(:,:,:,Kmm)) ] 
    47       !!         w dz(v) = pvv(:,:,:,Krhs) + 1/(e1e2v*e3v) mk+1[ mj(e1e2t*ww) dk(pvv(:,:,:,Kmm)) ] 
     46      !!         w dz(u) = u(rhs) + 1/(e1e2u*e3u) mk+1[ mi(e1e2t*ww) dk(u) ] 
     47      !!         w dz(v) = v(rhs) + 1/(e1e2v*e3v) mk+1[ mj(e1e2t*ww) dk(v) ] 
    4848      !!      Add this trend to the general trend (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)): 
    49       !!         (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) = (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) + w dz(u,v) 
     49      !!         (u(rhs),v(rhs)) = (u(rhs),v(rhs)) + w dz(u,v) 
    5050      !! 
    5151      !! ** Action  : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) with the vert. momentum adv. trends 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynzdf.F90

    r10884 r10893  
    5454      !! 
    5555      !! ** Method  :  - Leap-Frog time stepping on all trends but the vertical mixing 
    56       !!         puu(:,:,:,Kaa) =         puu(:,:,:,Kbb) + 2*dt *       puu(:,:,:,Krhs)             vector form or linear free surf. 
    57       !!         puu(:,:,:,Kaa) = ( e3u_b*puu(:,:,:,Kbb) + 2*dt * e3u_n*puu(:,:,:,Krhs) ) / e3u(:,:,:,Kaa)   otherwise 
     56      !!         u(after) =         u(before) + 2*dt *       u(rhs)                vector form or linear free surf. 
     57      !!         u(after) = ( e3u_b*u(before) + 2*dt * e3u_n*u(rhs) ) / e3u(after)   otherwise 
    5858      !!               - update the after velocity with the implicit vertical mixing. 
    5959      !!      This requires to solver the following system:  
    60       !!         puu(:,:,:,Kaa) = puu(:,:,:,Kaa) + 1/e3u(:,:,:,Kaa) dk+1[ mi(avm) / e3uw(:,:,:,Kaa) dk[ua] ] 
     60      !!         u(after) = u(after) + 1/e3u(after) dk+1[ mi(avm) / e3uw(after) dk[ua] ] 
    6161      !!      with the following surface/top/bottom boundary condition: 
    6262      !!      surface: wind stress input (averaged over kt-1/2 & kt+1/2) 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_cen.F90

    r10880 r10893  
    4444CONTAINS 
    4545 
    46    SUBROUTINE tra_adv_cen( kt, kit000, cdtype, pu_mm, pv_mm, pww,     & 
     46   SUBROUTINE tra_adv_cen( kt, kit000, cdtype, pU, pV, pW,     & 
    4747      &                    Kmm, pt, kjpt, Krhs, kn_cen_h, kn_cen_v )  
    4848      !!---------------------------------------------------------------------- 
     
    7070      INTEGER                                  , INTENT(in   ) ::   kn_cen_h        ! =2/4 (2nd or 4th order scheme) 
    7171      INTEGER                                  , INTENT(in   ) ::   kn_cen_v        ! =2/4 (2nd or 4th order scheme) 
    72       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pu_mm, pv_mm, pww   ! 3 ocean velocity components 
    73       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! active tracers and RHS of tracer equation 
     72      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU, pV, pW      ! 3 ocean volume flux components 
     73      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! tracers and RHS of tracer equation 
    7474      ! 
    7575      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
     
    106106               DO jj = 1, jpjm1 
    107107                  DO ji = 1, fs_jpim1   ! vector opt. 
    108                      zwx(ji,jj,jk) = 0.5_wp * pu_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm) ) 
    109                      zwy(ji,jj,jk) = 0.5_wp * pv_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) ) 
     108                     zwx(ji,jj,jk) = 0.5_wp * pU(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm) ) 
     109                     zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) ) 
    110110                  END DO 
    111111               END DO 
     
    134134                     zC4t_v =  zC2t_v + r1_6 * ( ztv(ji,jj-1,jk) - ztv(ji,jj+1,jk) ) 
    135135                     !                                                  ! C4 fluxes 
    136                      zwx(ji,jj,jk) =  0.5_wp * pu_mm(ji,jj,jk) * zC4t_u 
    137                      zwy(ji,jj,jk) =  0.5_wp * pv_mm(ji,jj,jk) * zC4t_v 
     136                     zwx(ji,jj,jk) =  0.5_wp * pU(ji,jj,jk) * zC4t_u 
     137                     zwy(ji,jj,jk) =  0.5_wp * pV(ji,jj,jk) * zC4t_v 
    138138                  END DO 
    139139               END DO 
     
    150150               DO jj = 2, jpjm1 
    151151                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    152                      zwz(ji,jj,jk) = 0.5 * pww(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) ) * wmask(ji,jj,jk) 
     152                     zwz(ji,jj,jk) = 0.5 * pW(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) ) * wmask(ji,jj,jk) 
    153153                  END DO 
    154154               END DO 
     
    160160               DO jj = 2, jpjm1 
    161161                  DO ji = fs_2, fs_jpim1 
    162                      zwz(ji,jj,jk) = pww(ji,jj,jk) * ztw(ji,jj,jk) * wmask(ji,jj,jk) 
     162                     zwz(ji,jj,jk) = pW(ji,jj,jk) * ztw(ji,jj,jk) * wmask(ji,jj,jk) 
    163163                  END DO 
    164164               END DO 
     
    171171               DO jj = 1, jpj 
    172172                  DO ji = 1, jpi 
    173                      zwz(ji,jj, mikt(ji,jj) ) = pww(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kmm)  
     173                     zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kmm)  
    174174                  END DO 
    175175               END DO    
    176176            ELSE                                   ! no ice-shelf cavities (only ocean surface) 
    177                zwz(:,:,1) = pww(:,:,1) * pt(:,:,1,jn,Kmm) 
     177               zwz(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kmm) 
    178178            ENDIF 
    179179         ENDIF 
     
    191191         !                             ! trend diagnostics 
    192192         IF( l_trd ) THEN 
    193             CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pu_mm, pt(:,:,:,jn,Kmm) ) 
    194             CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pv_mm, pt(:,:,:,jn,Kmm) ) 
    195             CALL trd_tra( kt, cdtype, jn, jptra_zad, zwz, pww, pt(:,:,:,jn,Kmm) ) 
     193            CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kmm) ) 
     194            CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kmm) ) 
     195            CALL trd_tra( kt, cdtype, jn, jptra_zad, zwz, pW, pt(:,:,:,jn,Kmm) ) 
    196196         END IF 
    197197         !                                 ! "Poleward" heat and salt transports  
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_fct.F90

    r10880 r10893  
    5252CONTAINS 
    5353 
    54    SUBROUTINE tra_adv_fct( kt, kit000, cdtype, p2dt, pu_mm, pv_mm, pww,       & 
     54   SUBROUTINE tra_adv_fct( kt, kit000, cdtype, p2dt, pU, pV, pW,       & 
    5555      &                    Kbb, Kmm, pt, kjpt, Krhs, kn_fct_h, kn_fct_v ) 
    5656      !!---------------------------------------------------------------------- 
     
    7777      INTEGER                                  , INTENT(in   ) ::   kn_fct_v        ! order of the FCT scheme (=2 or 4) 
    7878      REAL(wp)                                 , INTENT(in   ) ::   p2dt            ! tracer time-step 
    79       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pu_mm, pv_mm, pww   ! 3 ocean velocity components 
    80       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! active tracers and RHS of tracer equation 
     79      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU, pV, pW      ! 3 ocean volume flux components 
     80      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! tracers and RHS of tracer equation 
    8181      ! 
    8282      INTEGER  ::   ji, jj, jk, jn                           ! dummy loop indices   
     
    125125               DO ji = 1, fs_jpim1   ! vector opt. 
    126126                  ! upstream scheme 
    127                   zfp_ui = pu_mm(ji,jj,jk) + ABS( pu_mm(ji,jj,jk) ) 
    128                   zfm_ui = pu_mm(ji,jj,jk) - ABS( pu_mm(ji,jj,jk) ) 
    129                   zfp_vj = pv_mm(ji,jj,jk) + ABS( pv_mm(ji,jj,jk) ) 
    130                   zfm_vj = pv_mm(ji,jj,jk) - ABS( pv_mm(ji,jj,jk) ) 
     127                  zfp_ui = pU(ji,jj,jk) + ABS( pU(ji,jj,jk) ) 
     128                  zfm_ui = pU(ji,jj,jk) - ABS( pU(ji,jj,jk) ) 
     129                  zfp_vj = pV(ji,jj,jk) + ABS( pV(ji,jj,jk) ) 
     130                  zfm_vj = pV(ji,jj,jk) - ABS( pV(ji,jj,jk) ) 
    131131                  zwx(ji,jj,jk) = 0.5 * ( zfp_ui * pt(ji,jj,jk,jn,Kbb) + zfm_ui * pt(ji+1,jj  ,jk,jn,Kbb) ) 
    132132                  zwy(ji,jj,jk) = 0.5 * ( zfp_vj * pt(ji,jj,jk,jn,Kbb) + zfm_vj * pt(ji  ,jj+1,jk,jn,Kbb) ) 
     
    138138            DO jj = 1, jpj 
    139139               DO ji = 1, jpi 
    140                   zfp_wk = pww(ji,jj,jk) + ABS( pww(ji,jj,jk) ) 
    141                   zfm_wk = pww(ji,jj,jk) - ABS( pww(ji,jj,jk) ) 
     140                  zfp_wk = pW(ji,jj,jk) + ABS( pW(ji,jj,jk) ) 
     141                  zfm_wk = pW(ji,jj,jk) - ABS( pW(ji,jj,jk) ) 
    142142                  zwz(ji,jj,jk) = 0.5 * ( zfp_wk * pt(ji,jj,jk,jn,Kbb) + zfm_wk * pt(ji,jj,jk-1,jn,Kbb) ) * wmask(ji,jj,jk) 
    143143               END DO 
     
    148148               DO jj = 1, jpj 
    149149                  DO ji = 1, jpi 
    150                      zwz(ji,jj, mikt(ji,jj) ) = pww(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface  
     150                     zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface  
    151151                  END DO 
    152152               END DO    
    153153            ELSE                             ! no cavities: only at the ocean surface 
    154                zwz(:,:,1) = pww(:,:,1) * pt(:,:,1,jn,Kbb) 
     154               zwz(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kbb) 
    155155            ENDIF 
    156156         ENDIF 
     
    184184               DO jj = 1, jpjm1 
    185185                  DO ji = 1, fs_jpim1   ! vector opt. 
    186                      zwx(ji,jj,jk) = 0.5_wp * pu_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj,jk,jn,Kmm) ) - zwx(ji,jj,jk) 
    187                      zwy(ji,jj,jk) = 0.5_wp * pv_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj+1,jk,jn,Kmm) ) - zwy(ji,jj,jk) 
     186                     zwx(ji,jj,jk) = 0.5_wp * pU(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj,jk,jn,Kmm) ) - zwx(ji,jj,jk) 
     187                     zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj+1,jk,jn,Kmm) ) - zwy(ji,jj,jk) 
    188188                  END DO 
    189189               END DO 
     
    215215                     zC2t_v = pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) 
    216216                     !                                                  ! C4 minus upstream advective fluxes  
    217                      zwx(ji,jj,jk) =  0.5_wp * pu_mm(ji,jj,jk) * ( zC2t_u + zltu(ji,jj,jk) - zltu(ji+1,jj,jk) ) - zwx(ji,jj,jk) 
    218                      zwy(ji,jj,jk) =  0.5_wp * pv_mm(ji,jj,jk) * ( zC2t_v + zltv(ji,jj,jk) - zltv(ji,jj+1,jk) ) - zwy(ji,jj,jk) 
     217                     zwx(ji,jj,jk) =  0.5_wp * pU(ji,jj,jk) * ( zC2t_u + zltu(ji,jj,jk) - zltu(ji+1,jj,jk) ) - zwx(ji,jj,jk) 
     218                     zwy(ji,jj,jk) =  0.5_wp * pV(ji,jj,jk) * ( zC2t_v + zltv(ji,jj,jk) - zltv(ji,jj+1,jk) ) - zwy(ji,jj,jk) 
    219219                  END DO 
    220220               END DO 
     
    243243                     zC4t_v =  zC2t_v + r1_6 * ( ztv(ji  ,jj-1,jk) - ztv(ji  ,jj+1,jk) ) 
    244244                     !                                                  ! C4 minus upstream advective fluxes  
    245                      zwx(ji,jj,jk) =  0.5_wp * pu_mm(ji,jj,jk) * zC4t_u - zwx(ji,jj,jk) 
    246                      zwy(ji,jj,jk) =  0.5_wp * pv_mm(ji,jj,jk) * zC4t_v - zwy(ji,jj,jk) 
     245                     zwx(ji,jj,jk) =  0.5_wp * pU(ji,jj,jk) * zC4t_u - zwx(ji,jj,jk) 
     246                     zwy(ji,jj,jk) =  0.5_wp * pV(ji,jj,jk) * zC4t_v - zwy(ji,jj,jk) 
    247247                  END DO 
    248248               END DO 
     
    257257               DO jj = 2, jpjm1 
    258258                  DO ji = fs_2, fs_jpim1 
    259                      zwz(ji,jj,jk) =  (  pww(ji,jj,jk) * 0.5_wp * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
     259                     zwz(ji,jj,jk) =  (  pW(ji,jj,jk) * 0.5_wp * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
    260260                        &              - zwz(ji,jj,jk)  ) * wmask(ji,jj,jk) 
    261261                  END DO 
     
    268268               DO jj = 2, jpjm1 
    269269                  DO ji = fs_2, fs_jpim1 
    270                      zwz(ji,jj,jk) = ( pww(ji,jj,jk) * ztw(ji,jj,jk) - zwz(ji,jj,jk) ) * wmask(ji,jj,jk) 
     270                     zwz(ji,jj,jk) = ( pW(ji,jj,jk) * ztw(ji,jj,jk) - zwz(ji,jj,jk) ) * wmask(ji,jj,jk) 
    271271                  END DO 
    272272               END DO 
     
    303303            ! 
    304304            IF( l_trd ) THEN              ! trend diagnostics 
    305                CALL trd_tra( kt, cdtype, jn, jptra_xad, ztrdx, pu_mm, pt(:,:,:,jn,Kmm) ) 
    306                CALL trd_tra( kt, cdtype, jn, jptra_yad, ztrdy, pv_mm, pt(:,:,:,jn,Kmm) ) 
    307                CALL trd_tra( kt, cdtype, jn, jptra_zad, ztrdz, pww, pt(:,:,:,jn,Kmm) ) 
     305               CALL trd_tra( kt, cdtype, jn, jptra_xad, ztrdx, pU, pt(:,:,:,jn,Kmm) ) 
     306               CALL trd_tra( kt, cdtype, jn, jptra_yad, ztrdy, pV, pt(:,:,:,jn,Kmm) ) 
     307               CALL trd_tra( kt, cdtype, jn, jptra_zad, ztrdz, pW, pt(:,:,:,jn,Kmm) ) 
    308308            ENDIF 
    309309            !                             ! heat/salt transport 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_mus.F90

    r10880 r10893  
    5454CONTAINS 
    5555 
    56    SUBROUTINE tra_adv_mus( kt, kit000, cdtype, p2dt, pu_mm, pv_mm, pww,             & 
     56   SUBROUTINE tra_adv_mus( kt, kit000, cdtype, p2dt, pU, pV, pW,             & 
    5757      &                    Kbb, Kmm, pt, kjpt, Krhs, ld_msc_ups ) 
    5858      !!---------------------------------------------------------------------- 
     
    8080      LOGICAL                                  , INTENT(in   ) ::   ld_msc_ups      ! use upstream scheme within muscl 
    8181      REAL(wp)                                 , INTENT(in   ) ::   p2dt            ! tracer time-step 
    82       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pu_mm, pv_mm, pww   ! 3 ocean velocity components 
    83       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! active tracers and RHS of tracer equation 
     82      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU, pV, pW      ! 3 ocean volume flux components 
     83      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! tracers and RHS of tracer equation 
    8484      ! 
    8585      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
     
    172172               DO ji = fs_2, fs_jpim1   ! vector opt. 
    173173                  ! MUSCL fluxes 
    174                   z0u = SIGN( 0.5, pu_mm(ji,jj,jk) ) 
     174                  z0u = SIGN( 0.5, pU(ji,jj,jk) ) 
    175175                  zalpha = 0.5 - z0u 
    176                   zu  = z0u - 0.5 * pu_mm(ji,jj,jk) * p2dt * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,Kmm) 
     176                  zu  = z0u - 0.5 * pU(ji,jj,jk) * p2dt * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,Kmm) 
    177177                  zzwx = pt(ji+1,jj,jk,jn,Kbb) + xind(ji,jj,jk) * zu * zslpx(ji+1,jj,jk) 
    178178                  zzwy = pt(ji  ,jj,jk,jn,Kbb) + xind(ji,jj,jk) * zu * zslpx(ji  ,jj,jk) 
    179                   zwx(ji,jj,jk) = pu_mm(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
     179                  zwx(ji,jj,jk) = pU(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    180180                  ! 
    181                   z0v = SIGN( 0.5, pv_mm(ji,jj,jk) ) 
     181                  z0v = SIGN( 0.5, pV(ji,jj,jk) ) 
    182182                  zalpha = 0.5 - z0v 
    183                   zv  = z0v - 0.5 * pv_mm(ji,jj,jk) * p2dt * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,Kmm) 
     183                  zv  = z0v - 0.5 * pV(ji,jj,jk) * p2dt * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,Kmm) 
    184184                  zzwx = pt(ji,jj+1,jk,jn,Kbb) + xind(ji,jj,jk) * zv * zslpy(ji,jj+1,jk) 
    185185                  zzwy = pt(ji,jj  ,jk,jn,Kbb) + xind(ji,jj,jk) * zv * zslpy(ji,jj  ,jk) 
    186                   zwy(ji,jj,jk) = pv_mm(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
     186                  zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    187187               END DO 
    188188            END DO 
     
    201201         !                                ! trend diagnostics 
    202202         IF( l_trd )  THEN 
    203             CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pu_mm, pt(:,:,:,jn,Kbb) ) 
    204             CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pv_mm, pt(:,:,:,jn,Kbb) ) 
     203            CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kbb) ) 
     204            CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kbb) ) 
    205205         END IF 
    206206         !                                 ! "Poleward" heat and salt transports  
     
    239239            DO jj = 2, jpjm1       
    240240               DO ji = fs_2, fs_jpim1   ! vector opt. 
    241                   z0w = SIGN( 0.5, pww(ji,jj,jk+1) ) 
     241                  z0w = SIGN( 0.5, pW(ji,jj,jk+1) ) 
    242242                  zalpha = 0.5 + z0w 
    243                   zw  = z0w - 0.5 * pww(ji,jj,jk+1) * p2dt * r1_e1e2t(ji,jj) / e3w(ji,jj,jk+1,Kmm) 
     243                  zw  = z0w - 0.5 * pW(ji,jj,jk+1) * p2dt * r1_e1e2t(ji,jj) / e3w(ji,jj,jk+1,Kmm) 
    244244                  zzwx = pt(ji,jj,jk+1,jn,Kbb) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk+1) 
    245245                  zzwy = pt(ji,jj,jk  ,jn,Kbb) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk  ) 
    246                   zwx(ji,jj,jk+1) = pww(ji,jj,jk+1) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) * wmask(ji,jj,jk) 
     246                  zwx(ji,jj,jk+1) = pW(ji,jj,jk+1) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) * wmask(ji,jj,jk) 
    247247               END DO  
    248248            END DO 
     
    252252               DO jj = 1, jpj 
    253253                  DO ji = 1, jpi 
    254                      zwx(ji,jj, mikt(ji,jj) ) = pww(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) 
     254                     zwx(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) 
    255255                  END DO 
    256256               END DO    
    257257            ELSE                                      ! no cavities: only at the ocean surface 
    258                zwx(:,:,1) = pww(:,:,1) * pt(:,:,1,jn,Kbb) 
     258               zwx(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kbb) 
    259259            ENDIF 
    260260         ENDIF 
     
    268268         END DO 
    269269         !                                ! send trends for diagnostic 
    270          IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_zad, zwx, pww, pt(:,:,:,jn,Kbb) ) 
     270         IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_zad, zwx, pW, pt(:,:,:,jn,Kbb) ) 
    271271         ! 
    272272      END DO                     ! end of tracer loop 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_qck.F90

    r10880 r10893  
    4747CONTAINS 
    4848 
    49    SUBROUTINE tra_adv_qck ( kt, kit000, cdtype, p2dt, pu_mm, pv_mm, pww, Kbb, Kmm, pt, kjpt, Krhs ) 
     49   SUBROUTINE tra_adv_qck ( kt, kit000, cdtype, p2dt, pU, pV, pW, Kbb, Kmm, pt, kjpt, Krhs ) 
    5050      !!---------------------------------------------------------------------- 
    5151      !!                  ***  ROUTINE tra_adv_qck  *** 
     
    8989      INTEGER                                  , INTENT(in   ) ::   kjpt            ! number of tracers 
    9090      REAL(wp)                                 , INTENT(in   ) ::   p2dt            ! tracer time-step 
    91       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pu_mm, pv_mm, pww   ! 3 ocean velocity components 
    92       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! active tracers and RHS of tracer equation 
     91      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU, pV, pW      ! 3 ocean volume transport components 
     92      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! tracers and RHS of tracer equation 
    9393      !!---------------------------------------------------------------------- 
    9494      ! 
     
    107107      ! 
    108108      !        ! horizontal fluxes are computed with the QUICKEST + ULTIMATE scheme 
    109       CALL tra_adv_qck_i( kt, cdtype, p2dt, pu_mm, Kbb, Kmm, pt, kjpt, Krhs )  
    110       CALL tra_adv_qck_j( kt, cdtype, p2dt, pv_mm, Kbb, Kmm, pt, kjpt, Krhs )  
     109      CALL tra_adv_qck_i( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs )  
     110      CALL tra_adv_qck_j( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs )  
    111111 
    112112      !        ! vertical fluxes are computed with the 2nd order centered scheme 
    113       CALL tra_adv_cen2_k( kt, cdtype, pww, Kmm, pt, kjpt, Krhs ) 
     113      CALL tra_adv_cen2_k( kt, cdtype, pW, Kmm, pt, kjpt, Krhs ) 
    114114      ! 
    115115   END SUBROUTINE tra_adv_qck 
    116116 
    117117 
    118    SUBROUTINE tra_adv_qck_i( kt, cdtype, p2dt, pu_mm, Kbb, Kmm, pt, kjpt, Krhs ) 
     118   SUBROUTINE tra_adv_qck_i( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs ) 
    119119      !!---------------------------------------------------------------------- 
    120120      !! 
     
    125125      INTEGER                                  , INTENT(in   ) ::   kjpt       ! number of tracers 
    126126      REAL(wp)                                 , INTENT(in   ) ::   p2dt       ! tracer time-step 
    127       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pu_mm        ! i-velocity components 
     127      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU        ! i-velocity components 
    128128      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! active tracers and RHS of tracer equation 
    129129      !! 
     
    156156            DO jj = 2, jpjm1 
    157157               DO ji = fs_2, fs_jpim1   ! vector opt.          
    158                   zdir = 0.5 + SIGN( 0.5, pu_mm(ji,jj,jk) )   ! if pu_mm > 0 : zdir = 1 otherwise zdir = 0  
     158                  zdir = 0.5 + SIGN( 0.5, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    159159                  zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji+1,jj,jk)  ! FU in the x-direction for T  
    160160               END DO 
     
    165165            DO jj = 2, jpjm1 
    166166               DO ji = fs_2, fs_jpim1   ! vector opt.    
    167                   zdir = 0.5 + SIGN( 0.5, pu_mm(ji,jj,jk) )   ! if pu_mm > 0 : zdir = 1 otherwise zdir = 0  
     167                  zdir = 0.5 + SIGN( 0.5, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    168168                  zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) 
    169                   zwx(ji,jj,jk)  = ABS( pu_mm(ji,jj,jk) ) * p2dt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
     169                  zwx(ji,jj,jk)  = ABS( pU(ji,jj,jk) ) * p2dt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
    170170                  zfc(ji,jj,jk)  = zdir * pt(ji  ,jj,jk,jn,Kbb) + ( 1. - zdir ) * pt(ji+1,jj,jk,jn,Kbb)  ! FC in the x-direction for T 
    171171                  zfd(ji,jj,jk)  = zdir * pt(ji+1,jj,jk,jn,Kbb) + ( 1. - zdir ) * pt(ji  ,jj,jk,jn,Kbb)  ! FD in the x-direction for T 
     
    195195            DO jj = 2, jpjm1 
    196196               DO ji = fs_2, fs_jpim1   ! vector opt.                
    197                   zdir = 0.5 + SIGN( 0.5, pu_mm(ji,jj,jk) )   ! if pu_mm > 0 : zdir = 1 otherwise zdir = 0  
     197                  zdir = 0.5 + SIGN( 0.5, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    198198                  !--- If the second ustream point is a land point 
    199199                  !--- the flux is computed by the 1st order UPWIND scheme 
    200200                  zmsk = zdir * zfu(ji,jj,jk) + ( 1. - zdir ) * zfu(ji+1,jj,jk) 
    201201                  zwx(ji,jj,jk) = zmsk * zwx(ji,jj,jk) + ( 1. - zmsk ) * zfc(ji,jj,jk) 
    202                   zwx(ji,jj,jk) = zwx(ji,jj,jk) * pu_mm(ji,jj,jk) 
     202                  zwx(ji,jj,jk) = zwx(ji,jj,jk) * pU(ji,jj,jk) 
    203203               END DO 
    204204            END DO 
     
    220220         END DO 
    221221         !                                 ! trend diagnostics 
    222          IF( l_trd )   CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pu_mm, pt(:,:,:,jn,Kmm) ) 
     222         IF( l_trd )   CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kmm) ) 
    223223         ! 
    224224      END DO 
     
    227227 
    228228 
    229    SUBROUTINE tra_adv_qck_j( kt, cdtype, p2dt, pv_mm, Kbb, Kmm, pt, kjpt, Krhs ) 
     229   SUBROUTINE tra_adv_qck_j( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs ) 
    230230      !!---------------------------------------------------------------------- 
    231231      !! 
     
    236236      INTEGER                                  , INTENT(in   ) ::   kjpt       ! number of tracers 
    237237      REAL(wp)                                 , INTENT(in   ) ::   p2dt       ! tracer time-step 
    238       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pv_mm        ! j-velocity components 
     238      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pV        ! j-velocity components 
    239239      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! active tracers and RHS of tracer equation 
    240240      !! 
     
    272272            DO jj = 2, jpjm1 
    273273               DO ji = fs_2, fs_jpim1   ! vector opt.          
    274                   zdir = 0.5 + SIGN( 0.5, pv_mm(ji,jj,jk) )   ! if pu_mm > 0 : zdir = 1 otherwise zdir = 0  
     274                  zdir = 0.5 + SIGN( 0.5, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    275275                  zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji,jj+1,jk)  ! FU in the x-direction for T  
    276276               END DO 
     
    281281            DO jj = 2, jpjm1 
    282282               DO ji = fs_2, fs_jpim1   ! vector opt.    
    283                   zdir = 0.5 + SIGN( 0.5, pv_mm(ji,jj,jk) )   ! if pu_mm > 0 : zdir = 1 otherwise zdir = 0  
     283                  zdir = 0.5 + SIGN( 0.5, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    284284                  zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 
    285                   zwy(ji,jj,jk)  = ABS( pv_mm(ji,jj,jk) ) * p2dt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
     285                  zwy(ji,jj,jk)  = ABS( pV(ji,jj,jk) ) * p2dt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
    286286                  zfc(ji,jj,jk)  = zdir * pt(ji,jj  ,jk,jn,Kbb) + ( 1. - zdir ) * pt(ji,jj+1,jk,jn,Kbb)  ! FC in the x-direction for T 
    287287                  zfd(ji,jj,jk)  = zdir * pt(ji,jj+1,jk,jn,Kbb) + ( 1. - zdir ) * pt(ji,jj  ,jk,jn,Kbb)  ! FD in the x-direction for T 
     
    311311            DO jj = 2, jpjm1 
    312312               DO ji = fs_2, fs_jpim1   ! vector opt.                
    313                   zdir = 0.5 + SIGN( 0.5, pv_mm(ji,jj,jk) )   ! if pu_mm > 0 : zdir = 1 otherwise zdir = 0  
     313                  zdir = 0.5 + SIGN( 0.5, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    314314                  !--- If the second ustream point is a land point 
    315315                  !--- the flux is computed by the 1st order UPWIND scheme 
    316316                  zmsk = zdir * zfu(ji,jj,jk) + ( 1. - zdir ) * zfu(ji,jj+1,jk) 
    317317                  zwy(ji,jj,jk) = zmsk * zwy(ji,jj,jk) + ( 1. - zmsk ) * zfc(ji,jj,jk) 
    318                   zwy(ji,jj,jk) = zwy(ji,jj,jk) * pv_mm(ji,jj,jk) 
     318                  zwy(ji,jj,jk) = zwy(ji,jj,jk) * pV(ji,jj,jk) 
    319319               END DO 
    320320            END DO 
     
    336336         END DO 
    337337         !                                 ! trend diagnostics 
    338          IF( l_trd )   CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pv_mm, pt(:,:,:,jn,Kmm) ) 
     338         IF( l_trd )   CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kmm) ) 
    339339         !                                 ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    340340         IF( l_ptr )   CALL dia_ptr_hst( jn, 'adv', zwy(:,:,:) ) 
     
    345345 
    346346 
    347    SUBROUTINE tra_adv_cen2_k( kt, cdtype, pww, Kmm, pt, kjpt, Krhs ) 
     347   SUBROUTINE tra_adv_cen2_k( kt, cdtype, pW, Kmm, pt, kjpt, Krhs ) 
    348348      !!---------------------------------------------------------------------- 
    349349      !! 
     
    353353      CHARACTER(len=3)                         , INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
    354354      INTEGER                                  , INTENT(in   ) ::   kjpt     ! number of tracers 
    355       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pww      ! vertical velocity  
     355      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pW      ! vertical velocity  
    356356      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! active tracers and RHS of tracer equation 
    357357      ! 
     
    370370            DO jj = 2, jpjm1 
    371371               DO ji = fs_2, fs_jpim1   ! vector opt. 
    372                   zwz(ji,jj,jk) = 0.5 * pww(ji,jj,jk) * ( pt(ji,jj,jk-1,jn,Kmm) + pt(ji,jj,jk,jn,Kmm) ) * wmask(ji,jj,jk) 
     372                  zwz(ji,jj,jk) = 0.5 * pW(ji,jj,jk) * ( pt(ji,jj,jk-1,jn,Kmm) + pt(ji,jj,jk,jn,Kmm) ) * wmask(ji,jj,jk) 
    373373               END DO 
    374374            END DO 
     
    378378               DO jj = 1, jpj 
    379379                  DO ji = 1, jpi 
    380                      zwz(ji,jj, mikt(ji,jj) ) = pww(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kmm)   ! linear free surface  
     380                     zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kmm)   ! linear free surface  
    381381                  END DO 
    382382               END DO    
    383383            ELSE                                   ! no ocean cavities (only ocean surface) 
    384                zwz(:,:,1) = pww(:,:,1) * pt(:,:,1,jn,Kmm) 
     384               zwz(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kmm) 
    385385            ENDIF 
    386386         ENDIF 
     
    395395         END DO 
    396396         !                                 ! Send trends for diagnostic 
    397          IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_zad, zwz, pww, pt(:,:,:,jn,Kmm) ) 
     397         IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_zad, zwz, pW, pt(:,:,:,jn,Kmm) ) 
    398398         ! 
    399399      END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_ubs.F90

    r10884 r10893  
    4646CONTAINS 
    4747 
    48    SUBROUTINE tra_adv_ubs( kt, kit000, cdtype, p2dt, pu_mm, pv_mm, pww,          & 
     48   SUBROUTINE tra_adv_ubs( kt, kit000, cdtype, p2dt, pU, pV, pW,          & 
    4949      &                    Kbb, Kmm, pt, kjpt, Krhs, kn_ubs_v ) 
    5050      !!---------------------------------------------------------------------- 
     
    5858      !!      It is only used in the horizontal direction. 
    5959      !!      For example the i-component of the advective fluxes are given by : 
    60       !!                !  e2u e3u uu ( mi(Tn) - zltu(i  ) ,Kmm)   if uu(i,Kmm) >= 0 
     60      !!                !  e2u e3u un ( mi(Tn) - zltu(i  ) )   if un(i) >= 0 
    6161      !!          ztu = !  or  
    62       !!                !  e2u e3u uu ( mi(Tn) - zltu(i+1) ,Kmm)   if uu(i,Kmm) < 0 
     62      !!                !  e2u e3u un ( mi(Tn) - zltu(i+1) )   if un(i) < 0 
    6363      !!      where zltu is the second derivative of the before temperature field: 
    6464      !!          zltu = 1/e3t di[ e2u e3u / e1u di[Tb] ] 
     
    9191      INTEGER                                  , INTENT(in   ) ::   kn_ubs_v        ! number of tracers 
    9292      REAL(wp)                                 , INTENT(in   ) ::   p2dt            ! tracer time-step 
    93       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pu_mm, pv_mm, pww   ! 3 ocean transport components 
     93      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU, pV, pW      ! 3 ocean volume transport components 
    9494      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! tracers and RHS of tracer equation 
    9595      ! 
     
    146146            DO jj = 1, jpjm1 
    147147               DO ji = 1, fs_jpim1   ! vector opt. 
    148                   zfp_ui = pu_mm(ji,jj,jk) + ABS( pu_mm(ji,jj,jk) )      ! upstream transport (x2) 
    149                   zfm_ui = pu_mm(ji,jj,jk) - ABS( pu_mm(ji,jj,jk) ) 
    150                   zfp_vj = pv_mm(ji,jj,jk) + ABS( pv_mm(ji,jj,jk) ) 
    151                   zfm_vj = pv_mm(ji,jj,jk) - ABS( pv_mm(ji,jj,jk) ) 
     148                  zfp_ui = pU(ji,jj,jk) + ABS( pU(ji,jj,jk) )      ! upstream transport (x2) 
     149                  zfm_ui = pU(ji,jj,jk) - ABS( pU(ji,jj,jk) ) 
     150                  zfp_vj = pV(ji,jj,jk) + ABS( pV(ji,jj,jk) ) 
     151                  zfm_vj = pV(ji,jj,jk) - ABS( pV(ji,jj,jk) ) 
    152152                  !                                                  ! 2nd order centered advective fluxes (x2) 
    153                   zcenut = pu_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm) ) 
    154                   zcenvt = pv_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) ) 
     153                  zcenut = pU(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm) ) 
     154                  zcenvt = pV(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) ) 
    155155                  !                                                  ! UBS advective fluxes 
    156156                  ztu(ji,jj,jk) = 0.5 * ( zcenut - zfp_ui * zltu(ji,jj,jk) - zfm_ui * zltu(ji+1,jj,jk) ) 
     
    177177         !                 
    178178         IF( l_trd ) THEN                  ! trend diagnostics 
    179              CALL trd_tra( kt, cdtype, jn, jptra_xad, ztu, pu_mm, pt(:,:,:,jn,Kmm) ) 
    180              CALL trd_tra( kt, cdtype, jn, jptra_yad, ztv, pv_mm, pt(:,:,:,jn,Kmm) ) 
     179             CALL trd_tra( kt, cdtype, jn, jptra_xad, ztu, pU, pt(:,:,:,jn,Kmm) ) 
     180             CALL trd_tra( kt, cdtype, jn, jptra_yad, ztv, pV, pt(:,:,:,jn,Kmm) ) 
    181181         END IF 
    182182         !      
     
    199199               DO jj = 1, jpj 
    200200                  DO ji = 1, jpi 
    201                      zfp_wk = pww(ji,jj,jk) + ABS( pww(ji,jj,jk) ) 
    202                      zfm_wk = pww(ji,jj,jk) - ABS( pww(ji,jj,jk) ) 
     201                     zfp_wk = pW(ji,jj,jk) + ABS( pW(ji,jj,jk) ) 
     202                     zfm_wk = pW(ji,jj,jk) - ABS( pW(ji,jj,jk) ) 
    203203                     ztw(ji,jj,jk) = 0.5_wp * (  zfp_wk * pt(ji,jj,jk,jn,Kbb) + zfm_wk * pt(ji,jj,jk-1,jn,Kbb)  ) * wmask(ji,jj,jk) 
    204204                  END DO 
     
    209209                  DO jj = 1, jpj 
    210210                     DO ji = 1, jpi 
    211                         ztw(ji,jj, mikt(ji,jj) ) = pww(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface  
     211                        ztw(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface  
    212212                     END DO 
    213213                  END DO    
    214214               ELSE                                ! no cavities: only at the ocean surface 
    215                   ztw(:,:,1) = pww(:,:,1) * pt(:,:,1,jn,Kbb) 
     215                  ztw(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kbb) 
    216216               ENDIF 
    217217            ENDIF 
     
    232232               DO jj = 1, jpj 
    233233                  DO ji = 1, jpi 
    234                      ztw(ji,jj,jk) = (   0.5_wp * pww(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
     234                     ztw(ji,jj,jk) = (   0.5_wp * pW(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
    235235                        &              - ztw(ji,jj,jk)   ) * wmask(ji,jj,jk) 
    236236                  END DO 
     
    247247               DO jj = 2, jpjm1 
    248248                  DO ji = fs_2, fs_jpim1 
    249                      ztw(ji,jj,jk) = pww(ji,jj,jk) * ztw(ji,jj,jk) * wmask(ji,jj,jk) 
    250                   END DO 
    251                END DO 
    252             END DO 
    253             IF( ln_linssh )   ztw(:,:, 1 ) = pww(:,:,1) * pt(:,:,1,jn,Kmm)     !!gm ISF & 4th COMPACT doesn't work 
     249                     ztw(ji,jj,jk) = pW(ji,jj,jk) * ztw(ji,jj,jk) * wmask(ji,jj,jk) 
     250                  END DO 
     251               END DO 
     252            END DO 
     253            IF( ln_linssh )   ztw(:,:, 1 ) = pW(:,:,1) * pt(:,:,1,jn,Kmm)     !!gm ISF & 4th COMPACT doesn't work 
    254254            ! 
    255255         END SELECT 
     
    268268                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    269269                     zltv(ji,jj,jk) = pt(ji,jj,jk,jn,Krhs) - zltv(ji,jj,jk)                          & 
    270                         &           + pt(ji,jj,jk,jn,Kmm) * (  pww(ji,jj,jk) - pww(ji,jj,jk+1)  )   & 
     270                        &           + pt(ji,jj,jk,jn,Kmm) * (  pW(ji,jj,jk) - pW(ji,jj,jk+1)  )   & 
    271271                        &                              * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    272272                  END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trazdf.F90

    r10884 r10893  
    7777      ! 
    7878      !                                      !* compute lateral mixing trend and add it to the general trend 
    79       CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt, Kbb, Kmm, pts, Kaa, jpts )  
     79      CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt, Kbb, Kmm, Krhs, pts, Kaa, jpts )  
    8080 
    8181!!gm WHY here !   and I don't like that ! 
     
    109109 
    110110  
    111    SUBROUTINE tra_zdf_imp( kt, kit000, cdtype, p2dt, Kbb, Kmm, pt, Kaa, kjpt )  
     111   SUBROUTINE tra_zdf_imp( kt, kit000, cdtype, p2dt, Kbb, Kmm, Krhs, pt, Kaa, kjpt )  
    112112      !!---------------------------------------------------------------------- 
    113113      !!                  ***  ROUTINE tra_zdf_imp  *** 
     
    130130      !!--------------------------------------------------------------------- 
    131131      INTEGER                                  , INTENT(in   ) ::   kt       ! ocean time-step index 
    132       INTEGER                                  , INTENT(in   ) ::   Kbb, Kmm, Kaa  ! ocean time level indices 
     132      INTEGER                                  , INTENT(in   ) ::   Kbb, Kmm, Krhs, Kaa  ! ocean time level indices 
    133133      INTEGER                                  , INTENT(in   ) ::   kit000   ! first time step index 
    134134      CHARACTER(len=3)                         , INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
     
    240240         DO jj = 2, jpjm1           !* 2nd recurrence:    Zk = Yk - Ik / Tk-1  Zk-1 
    241241            DO ji = fs_2, fs_jpim1 
    242                pt(ji,jj,1,jn,Kaa) = e3t(ji,jj,1,Kbb) * pt(ji,jj,1,jn,Kbb) + p2dt * e3t(ji,jj,1,Kmm) * pt(ji,jj,1,jn,Kaa) 
     242               pt(ji,jj,1,jn,Kaa) = e3t(ji,jj,1,Kbb) * pt(ji,jj,1,jn,Kbb) + p2dt * e3t(ji,jj,1,Kmm) * pt(ji,jj,1,jn,Krhs) 
    243243            END DO 
    244244         END DO 
     
    246246            DO jj = 2, jpjm1 
    247247               DO ji = fs_2, fs_jpim1 
    248                   zrhs = e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) + p2dt * e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk,jn,Kaa)   ! zrhs=right hand side 
     248                  zrhs = e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) + p2dt * e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk,jn,Krhs)   ! zrhs=right hand side 
    249249                  pt(ji,jj,jk,jn,Kaa) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pt(ji,jj,jk-1,jn,Kaa) 
    250250               END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trczdf.F90

    r10884 r10893  
    5656      IF( l_trdtrc )   ztrtrd(:,:,:,:)  = ptr(:,:,:,:,Krhs) 
    5757      ! 
    58       CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dttrc, Kbb, Kmm, ptr, Kaa, jptra )    !   implicit scheme           
     58      CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dttrc, Kbb, Kmm, Krhs, ptr, Kaa, jptra )    !   implicit scheme           
    5959      ! 
    6060      IF( l_trdtrc )   THEN                      ! save the vertical diffusive trends for further diagnostics 
Note: See TracChangeset for help on using the changeset viewer.