Changeset 12377 for NEMO/trunk/src/OCE/TRD/trddyn.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/OCE/TRD/trddyn.F90
r10425 r12377 36 36 37 37 !! * Substitutions 38 # include " vectopt_loop_substitute.h90"38 # include "do_loop_substitute.h90" 39 39 !!---------------------------------------------------------------------- 40 40 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 44 44 CONTAINS 45 45 46 SUBROUTINE trd_dyn( putrd, pvtrd, ktrd, kt )46 SUBROUTINE trd_dyn( putrd, pvtrd, ktrd, kt, Kmm ) 47 47 !!--------------------------------------------------------------------- 48 48 !! *** ROUTINE trd_mod *** … … 55 55 INTEGER , INTENT(in ) :: ktrd ! trend index 56 56 INTEGER , INTENT(in ) :: kt ! time step 57 INTEGER , INTENT(in ) :: Kmm ! time level index 57 58 !!---------------------------------------------------------------------- 58 59 ! … … 66 67 ! 3D output of momentum and/or tracers trends using IOM interface 67 68 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 68 IF( ln_dyn_trd ) CALL trd_dyn_iom( putrd, pvtrd, ktrd, kt )69 IF( ln_dyn_trd ) CALL trd_dyn_iom( putrd, pvtrd, ktrd, kt, Kmm ) 69 70 70 71 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 71 72 ! Integral Constraints Properties for momentum and/or tracers trends 72 73 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 73 IF( ln_glo_trd ) CALL trd_glo( putrd, pvtrd, ktrd, 'DYN', kt )74 IF( ln_glo_trd ) CALL trd_glo( putrd, pvtrd, ktrd, 'DYN', kt, Kmm ) 74 75 75 76 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 76 77 ! Kinetic Energy trends 77 78 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 78 IF( ln_KE_trd ) CALL trd_ken( putrd, pvtrd, ktrd, kt )79 IF( ln_KE_trd ) CALL trd_ken( putrd, pvtrd, ktrd, kt, Kmm ) 79 80 80 81 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 81 82 ! Vorticity trends 82 83 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 83 IF( ln_vor_trd ) CALL trd_vor( putrd, pvtrd, ktrd, kt )84 IF( ln_vor_trd ) CALL trd_vor( putrd, pvtrd, ktrd, kt, Kmm ) 84 85 85 86 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 91 92 92 93 93 SUBROUTINE trd_dyn_iom( putrd, pvtrd, ktrd, kt )94 SUBROUTINE trd_dyn_iom( putrd, pvtrd, ktrd, kt, Kmm ) 94 95 !!--------------------------------------------------------------------- 95 96 !! *** ROUTINE trd_dyn_iom *** … … 100 101 INTEGER , INTENT(in ) :: ktrd ! trend index 101 102 INTEGER , INTENT(in ) :: kt ! time step 103 INTEGER , INTENT(in ) :: Kmm ! time level index 102 104 ! 103 105 INTEGER :: ji, jj, jk ! dummy loop indices … … 121 123 z3dx(:,:,:) = 0._wp ! U.dxU & V.dyV (approximation) 122 124 z3dy(:,:,:) = 0._wp 123 DO jk = 1, jpkm1 ! no mask as un,vn are masked 124 DO jj = 2, jpjm1 125 DO ji = 2, jpim1 126 z3dx(ji,jj,jk) = un(ji,jj,jk) * ( un(ji+1,jj,jk) - un(ji-1,jj,jk) ) / ( 2._wp * e1u(ji,jj) ) 127 z3dy(ji,jj,jk) = vn(ji,jj,jk) * ( vn(ji,jj+1,jk) - vn(ji,jj-1,jk) ) / ( 2._wp * e2v(ji,jj) ) 128 END DO 129 END DO 130 END DO 125 DO_3D_00_00( 1, jpkm1 ) 126 z3dx(ji,jj,jk) = uu(ji,jj,jk,Kmm) * ( uu(ji+1,jj,jk,Kmm) - uu(ji-1,jj,jk,Kmm) ) / ( 2._wp * e1u(ji,jj) ) 127 z3dy(ji,jj,jk) = vv(ji,jj,jk,Kmm) * ( vv(ji,jj+1,jk,Kmm) - vv(ji,jj-1,jk,Kmm) ) / ( 2._wp * e2v(ji,jj) ) 128 END_3D 131 129 CALL lbc_lnk_multi( 'trddyn', z3dx, 'U', -1., z3dy, 'V', -1. ) 132 130 CALL iom_put( "utrd_udx", z3dx ) … … 142 140 ! ! wind stress trends 143 141 ALLOCATE( z2dx(jpi,jpj) , z2dy(jpi,jpj) ) 144 z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u _n(:,:,1) * rau0 )145 z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v _n(:,:,1) * rau0 )142 z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u(:,:,1,Kmm) * rau0 ) 143 z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v(:,:,1,Kmm) * rau0 ) 146 144 CALL iom_put( "utrd_tau", z2dx ) 147 145 CALL iom_put( "vtrd_tau", z2dy ) … … 159 157 ! ikbv = mbkv(ji,jj) 160 158 ! z3dx(ji,jj,jk) = 0.5 * ( rCdU_bot(ji+1,jj) + rCdU_bot(ji,jj) ) & 161 ! & * u n(ji,jj,ikbu) / e3u_n(ji,jj,ikbu)159 ! & * uu(ji,jj,ikbu,Kmm) / e3u(ji,jj,ikbu,Kmm) 162 160 ! z3dy(ji,jj,jk) = 0.5 * ( rCdU_bot(ji,jj+1) + rCdU_bot(ji,jj) ) & 163 ! & * v n(ji,jj,ikbv) / e3v_n(ji,jj,ikbv)161 ! & * vv(ji,jj,ikbv,Kmm) / e3v(ji,jj,ikbv,Kmm) 164 162 ! END DO 165 163 ! END DO
Note: See TracChangeset
for help on using the changeset viewer.