Changeset 10877 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynzad.F90
- Timestamp:
- 2019-04-16T11:50:59+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
r10874 r10877 36 36 CONTAINS 37 37 38 SUBROUTINE dyn_zad ( kt )38 SUBROUTINE dyn_zad ( kt, Kmm, puu, pvv, Krhs ) 39 39 !!---------------------------------------------------------------------- 40 40 !! *** ROUTINE dynzad *** … … 44 44 !! 45 45 !! ** 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) 50 50 !! 51 !! ** Action : - Update ( ua,va) with the vert. momentum adv. trends51 !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) 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 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 55 57 ! 56 58 INTEGER :: ji, jj, jk ! dummy loop indices … … 68 70 ENDIF 69 71 70 IF( l_trddyn ) THEN ! Save ua and vatrends72 IF( l_trddyn ) THEN ! Save puu(:,:,:,Krhs) and pvv(:,:,:,Krhs) trends 71 73 ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 72 ztrdu(:,:,:) = ua(:,:,:)73 ztrdv(:,:,:) = va(:,:,:)74 ztrdu(:,:,:) = puu(:,:,:,Krhs) 75 ztrdv(:,:,:) = pvv(:,:,:,Krhs) 74 76 ENDIF 75 77 … … 77 79 DO jj = 2, jpj ! vertical fluxes 78 80 DO ji = fs_2, jpi ! vector opt. 79 zww(ji,jj) = 0.25_wp * e1e2t(ji,jj) * w n(ji,jj,jk)81 zww(ji,jj) = 0.25_wp * e1e2t(ji,jj) * ww(ji,jj,jk) 80 82 END DO 81 83 END DO 82 84 DO jj = 2, jpjm1 ! vertical momentum advection at w-point 83 85 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) ) 86 88 END DO 87 89 END DO … … 101 103 DO jj = 2, jpjm1 102 104 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) 105 107 END DO 106 108 END DO … … 108 110 109 111 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(:,:,:) 112 114 CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt ) 113 115 DEALLOCATE( ztrdu, ztrdv )
Note: See TracChangeset
for help on using the changeset viewer.