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

Ignore:
Timestamp:
2019-04-16T11:50:59+02:00 (5 years ago)
Author:
davestorkey
Message:

branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : momentum advection and dynvor modules.

File:
1 edited

Legend:

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

    r10874 r10877  
    3636CONTAINS 
    3737 
    38    SUBROUTINE dyn_zad ( kt ) 
     38   SUBROUTINE dyn_zad ( kt, Kmm, puu, pvv, Krhs ) 
    3939      !!---------------------------------------------------------------------- 
    4040      !!                  ***  ROUTINE dynzad  *** 
     
    4444      !! 
    4545      !! ** Method  :   The now vertical advection of momentum is given by: 
    46       !!         w dz(u) = ua + 1/(e1e2u*e3u) mk+1[ mi(e1e2t*wn) dk(un) ] 
    47       !!         w dz(v) = va + 1/(e1e2v*e3v) mk+1[ mj(e1e2t*wn) dk(vn) ] 
    48       !!      Add this trend to the general trend (ua,va): 
    49       !!         (ua,va) = (ua,va) + w dz(u,v) 
     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)) ] 
     48      !!      Add this trend to the general trend (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)): 
     49      !!         (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) = (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) + w dz(u,v) 
    5050      !! 
    51       !! ** Action  : - Update (ua,va) with the vert. momentum adv. trends 
     51      !! ** Action  : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) with the vert. momentum adv. trends 
    5252      !!              - Send the trends to trddyn for diagnostics (l_trddyn=T) 
    5353      !!---------------------------------------------------------------------- 
    54       INTEGER, INTENT(in) ::   kt   ! ocean time-step inedx 
     54      INTEGER                             , INTENT( in )  ::  kt               ! ocean time-step inedx 
     55      INTEGER                             , INTENT( in )  ::  Kmm, Krhs        ! ocean time level indices 
     56      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) ::  puu, pvv         ! ocean velocities and RHS of momentum equation 
    5557      ! 
    5658      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     
    6870      ENDIF 
    6971 
    70       IF( l_trddyn )   THEN         ! Save ua and va trends 
     72      IF( l_trddyn )   THEN         ! Save puu(:,:,:,Krhs) and pvv(:,:,:,Krhs) trends 
    7173         ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) )  
    72          ztrdu(:,:,:) = ua(:,:,:)  
    73          ztrdv(:,:,:) = va(:,:,:)  
     74         ztrdu(:,:,:) = puu(:,:,:,Krhs)  
     75         ztrdv(:,:,:) = pvv(:,:,:,Krhs)  
    7476      ENDIF 
    7577       
     
    7779         DO jj = 2, jpj                   ! vertical fluxes  
    7880            DO ji = fs_2, jpi             ! vector opt. 
    79                zww(ji,jj) = 0.25_wp * e1e2t(ji,jj) * wn(ji,jj,jk) 
     81               zww(ji,jj) = 0.25_wp * e1e2t(ji,jj) * ww(ji,jj,jk) 
    8082            END DO 
    8183         END DO 
    8284         DO jj = 2, jpjm1                 ! vertical momentum advection at w-point 
    8385            DO ji = fs_2, fs_jpim1        ! vector opt. 
    84                zwuw(ji,jj,jk) = ( zww(ji+1,jj  ) + zww(ji,jj) ) * ( un(ji,jj,jk-1) - un(ji,jj,jk) ) 
    85                zwvw(ji,jj,jk) = ( zww(ji  ,jj+1) + zww(ji,jj) ) * ( vn(ji,jj,jk-1) - vn(ji,jj,jk) ) 
     86               zwuw(ji,jj,jk) = ( zww(ji+1,jj  ) + zww(ji,jj) ) * ( puu(ji,jj,jk-1,Kmm) - puu(ji,jj,jk,Kmm) ) 
     87               zwvw(ji,jj,jk) = ( zww(ji  ,jj+1) + zww(ji,jj) ) * ( pvv(ji,jj,jk-1,Kmm) - pvv(ji,jj,jk,Kmm) ) 
    8688            END DO   
    8789         END DO    
     
    101103         DO jj = 2, jpjm1 
    102104            DO ji = fs_2, fs_jpim1       ! vector opt. 
    103                ua(ji,jj,jk) = ua(ji,jj,jk) - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) * r1_e1e2u(ji,jj) / e3u_n(ji,jj,jk) 
    104                va(ji,jj,jk) = va(ji,jj,jk) - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) * r1_e1e2v(ji,jj) / e3v_n(ji,jj,jk) 
     105               puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,Kmm) 
     106               pvv(ji,jj,jk,Krhs) = pvv(ji,jj,jk,Krhs) - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,Kmm) 
    105107            END DO   
    106108         END DO   
     
    108110 
    109111      IF( l_trddyn ) THEN           ! save the vertical advection trends for diagnostic 
    110          ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    111          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     112         ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 
     113         ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 
    112114         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt ) 
    113115         DEALLOCATE( ztrdu, ztrdv )  
Note: See TracChangeset for help on using the changeset viewer.