Changeset 10874 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynzad.F90
- Timestamp:
- 2019-04-15T15:57:37+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynzad.F90
r10789 r10874 36 36 CONTAINS 37 37 38 SUBROUTINE dyn_zad ( kt , ktlev, pu_rhs, pv_rhs)38 SUBROUTINE dyn_zad ( kt ) 39 39 !!---------------------------------------------------------------------- 40 40 !! *** ROUTINE dynzad *** … … 44 44 !! 45 45 !! ** Method : The now vertical advection of momentum is given by: 46 !! w dz(u) = pu_rhs + 1/(e1e2u*e3u) mk+1[ mi(e1e2t*ww) dk(uu(:,:,:,ktlev)) ]47 !! w dz(v) = pv_rhs + 1/(e1e2v*e3v) mk+1[ mj(e1e2t*ww) dk(vv(:,:,:,ktlev)) ]48 !! Add this trend to the general trend ( pu_rhs,pv_rhs):49 !! ( pu_rhs,pv_rhs) = (pu_rhs,pv_rhs) + w dz(u,v)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) 50 50 !! 51 !! ** Action : - Update ( pu_rhs,pv_rhs) with the vert. momentum adv. trends51 !! ** Action : - Update (ua,va) with the vert. momentum adv. trends 52 52 !! - Send the trends to trddyn for diagnostics (l_trddyn=T) 53 53 !!---------------------------------------------------------------------- 54 INTEGER, INTENT(in) :: kt ! ocean time-step index 55 INTEGER, INTENT(in) :: ktlev ! time level index for source terms 56 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pu_rhs, pv_rhs ! momentum trends 54 INTEGER, INTENT(in) :: kt ! ocean time-step inedx 57 55 ! 58 56 INTEGER :: ji, jj, jk ! dummy loop indices … … 70 68 ENDIF 71 69 72 IF( l_trddyn ) THEN ! Save pu_rhs and pv_rhstrends70 IF( l_trddyn ) THEN ! Save ua and va trends 73 71 ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 74 ztrdu(:,:,:) = pu_rhs(:,:,:)75 ztrdv(:,:,:) = pv_rhs(:,:,:)72 ztrdu(:,:,:) = ua(:,:,:) 73 ztrdv(:,:,:) = va(:,:,:) 76 74 ENDIF 77 75 … … 79 77 DO jj = 2, jpj ! vertical fluxes 80 78 DO ji = fs_2, jpi ! vector opt. 81 zww(ji,jj) = 0.25_wp * e1e2t(ji,jj) * w w(ji,jj,jk)79 zww(ji,jj) = 0.25_wp * e1e2t(ji,jj) * wn(ji,jj,jk) 82 80 END DO 83 81 END DO 84 82 DO jj = 2, jpjm1 ! vertical momentum advection at w-point 85 83 DO ji = fs_2, fs_jpim1 ! vector opt. 86 zwuw(ji,jj,jk) = ( zww(ji+1,jj ) + zww(ji,jj) ) * ( u u(ji,jj,jk-1,ktlev) - uu(ji,jj,jk,ktlev) )87 zwvw(ji,jj,jk) = ( zww(ji ,jj+1) + zww(ji,jj) ) * ( v v(ji,jj,jk-1,ktlev) - vv(ji,jj,jk,ktlev) )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) ) 88 86 END DO 89 87 END DO … … 103 101 DO jj = 2, jpjm1 104 102 DO ji = fs_2, fs_jpim1 ! vector opt. 105 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,ktlev)106 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,ktlev)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) 107 105 END DO 108 106 END DO … … 110 108 111 109 IF( l_trddyn ) THEN ! save the vertical advection trends for diagnostic 112 ztrdu(:,:,:) = pu_rhs(:,:,:) - ztrdu(:,:,:)113 ztrdv(:,:,:) = pv_rhs(:,:,:) - ztrdv(:,:,:)110 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 111 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 114 112 CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt ) 115 113 DEALLOCATE( ztrdu, ztrdv )
Note: See TracChangeset
for help on using the changeset viewer.