- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DYN/dynzad.F90
r10068 r11949 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) = u a + 1/(e1e2u*e3u) mk+1[ mi(e1e2t*wn) dk(un) ]47 !! w dz(v) = v a + 1/(e1e2v*e3v) mk+1[ mj(e1e2t*wn) dk(vn) ]48 !! Add this trend to the general trend ( ua,va):49 !! (u a,va) = (ua,va) + w dz(u,v)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) ] 48 !! Add this trend to the general trend (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)): 49 !! (u(rhs),v(rhs)) = (u(rhs),v(rhs)) + 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 CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt )112 ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 113 ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 114 CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt, Kmm ) 113 115 DEALLOCATE( ztrdu, ztrdv ) 114 116 ENDIF 115 117 ! ! Control print 116 IF(ln_ctl) CALL prt_ctl( tab3d_1= ua, clinfo1=' zad - Ua: ', mask1=umask, &117 & tab3d_2= va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' )118 IF(ln_ctl) CALL prt_ctl( tab3d_1=puu(:,:,:,Krhs), clinfo1=' zad - Ua: ', mask1=umask, & 119 & tab3d_2=pvv(:,:,:,Krhs), clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 118 120 ! 119 121 IF( ln_timing ) CALL timing_stop('dyn_zad')
Note: See TracChangeset
for help on using the changeset viewer.