Changeset 5989 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90
- Timestamp:
- 2015-12-03T09:10:32+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90
r5260 r5989 13 13 USE oce ! ocean dynamics and tracers variables 14 14 USE dom_oce ! ocean space and time domain variables 15 USE sbc_oce ! surface boundary condition: ocean 15 16 USE zdf_oce ! ocean vertical physics variables 16 17 USE trd_oce ! trends: ocean variables 17 18 !!gm USE dynhpg ! hydrostatic pressure gradient 18 19 USE zdfbfr ! bottom friction 19 USE ldftra_oce ! ocean active tracers lateral physics 20 USE sbc_oce ! surface boundary condition: ocean 20 USE ldftra ! ocean active tracers lateral physics 21 21 USE phycst ! physical constants 22 22 USE trdvor ! ocean vorticity trends 23 23 USE trdglo ! trends:global domain averaged 24 USE trdmxl ! ocean active mixed layer tracers trends 24 USE trdmxl ! ocean active mixed layer tracers trends 25 ! 25 26 USE in_out_manager ! I/O manager 26 27 USE iom ! I/O manager library … … 96 97 nkstp = kt 97 98 DO jk = 1, jpkm1 98 bu (:,:,jk) = e1u(:,:) *e2u(:,:) * fse3u_n(:,:,jk)99 bv (:,:,jk) = e1v(:,:) *e2v(:,:) * fse3v_n(:,:,jk)99 bu (:,:,jk) = e1e2u(:,:) * fse3u_n(:,:,jk) 100 bv (:,:,jk) = e1e2v(:,:) * fse3v_n(:,:,jk) 100 101 r1_bt(:,:,jk) = 1._wp / ( e1e2t(:,:) * fse3t_n(:,:,jk) ) * tmask(:,:,jk) 101 102 END DO … … 117 118 ! 118 119 SELECT CASE( ktrd ) 119 CASE( jpdyn_hpg ) ; CALL iom_put( "ketrd_hpg", zke ) ! hydrostatic pressure gradient 120 CASE( jpdyn_spg ) ; CALL iom_put( "ketrd_spg", zke ) ! surface pressure gradient 121 CASE( jpdyn_spgexp ); CALL iom_put( "ketrd_spgexp", zke ) ! surface pressure gradient (explicit) 122 CASE( jpdyn_spgflt ); CALL iom_put( "ketrd_spgflt", zke ) ! surface pressure gradient (filter) 123 CASE( jpdyn_pvo ) ; CALL iom_put( "ketrd_pvo", zke ) ! planetary vorticity 124 CASE( jpdyn_rvo ) ; CALL iom_put( "ketrd_rvo", zke ) ! relative vorticity (or metric term) 125 CASE( jpdyn_keg ) ; CALL iom_put( "ketrd_keg", zke ) ! Kinetic Energy gradient (or had) 126 CASE( jpdyn_zad ) ; CALL iom_put( "ketrd_zad", zke ) ! vertical advection 127 CASE( jpdyn_ldf ) ; CALL iom_put( "ketrd_ldf", zke ) ! lateral diffusion 128 CASE( jpdyn_zdf ) ; CALL iom_put( "ketrd_zdf", zke ) ! vertical diffusion 120 CASE( jpdyn_hpg ) ; CALL iom_put( "ketrd_hpg", zke ) ! hydrostatic pressure gradient 121 CASE( jpdyn_spg ) ; CALL iom_put( "ketrd_spg", zke ) ! surface pressure gradient 122 CASE( jpdyn_pvo ) ; CALL iom_put( "ketrd_pvo", zke ) ! planetary vorticity 123 CASE( jpdyn_rvo ) ; CALL iom_put( "ketrd_rvo", zke ) ! relative vorticity (or metric term) 124 CASE( jpdyn_keg ) ; CALL iom_put( "ketrd_keg", zke ) ! Kinetic Energy gradient (or had) 125 CASE( jpdyn_zad ) ; CALL iom_put( "ketrd_zad", zke ) ! vertical advection 126 CASE( jpdyn_ldf ) ; CALL iom_put( "ketrd_ldf", zke ) ! lateral diffusion 127 CASE( jpdyn_zdf ) ; CALL iom_put( "ketrd_zdf", zke ) ! vertical diffusion 129 128 ! ! wind stress trends 130 131 132 133 134 135 136 137 138 139 140 141 142 129 CALL wrk_alloc( jpi, jpj, z2dx, z2dy, zke2d ) 130 z2dx(:,:) = un(:,:,1) * ( utau_b(:,:) + utau(:,:) ) * e1u(:,:) * e2u(:,:) * umask(:,:,1) 131 z2dy(:,:) = vn(:,:,1) * ( vtau_b(:,:) + vtau(:,:) ) * e1v(:,:) * e2v(:,:) * vmask(:,:,1) 132 zke2d(1,:) = 0._wp ; zke2d(:,1) = 0._wp 133 DO jj = 2, jpj 134 DO ji = 2, jpi 135 zke2d(ji,jj) = 0.5_wp * ( z2dx(ji,jj) + z2dx(ji-1,jj) & 136 & + z2dy(ji,jj) + z2dy(ji,jj-1) ) * r1_bt(ji,jj,1) 137 END DO 138 END DO 139 CALL iom_put( "ketrd_tau", zke2d ) 140 CALL wrk_dealloc( jpi, jpj , z2dx, z2dy, zke2d ) 141 CASE( jpdyn_bfr ) ; CALL iom_put( "ketrd_bfr", zke ) ! bottom friction (explicit case) 143 142 !!gm TO BE DONE properly 144 143 !!gm only valid if ln_bfrimp=F otherwise the bottom stress as to be recomputed at the end of the computation.... … … 162 161 ! ENDIF 163 162 !!gm end 164 163 CASE( jpdyn_atf ) ; CALL iom_put( "ketrd_atf", zke ) ! asselin filter trends 165 164 !! a faire !!!! idee changer dynnxt pour avoir un appel a jpdyn_bfr avant le swap !!! 166 165 !! reflechir a une possible sauvegarde du "vrai" un,vn pour le calcul de atf.... … … 184 183 ! CALL iom_put( "ketrd_bfri", zke2d ) 185 184 ! ENDIF 186 187 188 189 190 191 192 193 185 CASE( jpdyn_ken ) ; ! kinetic energy 186 ! called in dynnxt.F90 before asselin time filter 187 ! with putrd=ua and pvtrd=va 188 zke(:,:,:) = 0.5_wp * zke(:,:,:) 189 CALL iom_put( "KE", zke ) 190 ! 191 CALL ken_p2k( kt , zke ) 192 CALL iom_put( "ketrd_convP2K", zke ) ! conversion -rau*g*w 194 193 ! 195 194 END SELECT … … 263 262 ENDIF 264 263 ! ! allocate box volume arrays 265 IF 264 IF( trd_ken_alloc() /= 0 ) CALL ctl_stop('trd_ken_alloc: failed to allocate arrays') 266 265 ! 267 266 !!gm IF( .NOT. (ln_hpg_zco.OR.ln_hpg_zps) ) & 268 267 !!gm & CALL ctl_stop('trd_ken_init : only full and partial cells are coded for conversion rate') 269 268 ! 270 IF ( .NOT.lk_vvl ) THEN! constant volume: bu, bv, 1/bt computed one for all269 IF( .NOT.lk_vvl ) THEN ! constant volume: bu, bv, 1/bt computed one for all 271 270 DO jk = 1, jpkm1 272 bu (:,:,jk) = e1u(:,:) *e2u(:,:) * fse3u_n(:,:,jk)273 bv (:,:,jk) = e1v(:,:) *e2v(:,:) * fse3v_n(:,:,jk)271 bu (:,:,jk) = e1e2u(:,:) * fse3u_n(:,:,jk) 272 bv (:,:,jk) = e1e2v(:,:) * fse3v_n(:,:,jk) 274 273 r1_bt(:,:,jk) = 1._wp / ( e1e2t(:,:) * fse3t_n(:,:,jk) ) 275 274 END DO
Note: See TracChangeset
for help on using the changeset viewer.