- Timestamp:
- 2015-11-20T09:39:06+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90
r5620 r5901 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 120 121 122 123 124 125 126 127 128 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_spgexp ); CALL iom_put( "ketrd_spgexp", zke ) ! surface pressure gradient (explicit) 123 CASE( jpdyn_spgflt ); CALL iom_put( "ketrd_spgflt", zke ) ! surface pressure gradient (filter) 124 CASE( jpdyn_pvo ) ; CALL iom_put( "ketrd_pvo", zke ) ! planetary vorticity 125 CASE( jpdyn_rvo ) ; CALL iom_put( "ketrd_rvo", zke ) ! relative vorticity (or metric term) 126 CASE( jpdyn_keg ) ; CALL iom_put( "ketrd_keg", zke ) ! Kinetic Energy gradient (or had) 127 CASE( jpdyn_zad ) ; CALL iom_put( "ketrd_zad", zke ) ! vertical advection 128 CASE( jpdyn_ldf ) ; CALL iom_put( "ketrd_ldf", zke ) ! lateral diffusion 129 CASE( jpdyn_zdf ) ; CALL iom_put( "ketrd_zdf", zke ) ! vertical diffusion 129 130 ! ! wind stress trends 130 131 132 133 134 135 136 137 138 139 140 141 142 131 CALL wrk_alloc( jpi, jpj, z2dx, z2dy, zke2d ) 132 z2dx(:,:) = un(:,:,1) * ( utau_b(:,:) + utau(:,:) ) * e1u(:,:) * e2u(:,:) * umask(:,:,1) 133 z2dy(:,:) = vn(:,:,1) * ( vtau_b(:,:) + vtau(:,:) ) * e1v(:,:) * e2v(:,:) * vmask(:,:,1) 134 zke2d(1,:) = 0._wp ; zke2d(:,1) = 0._wp 135 DO jj = 2, jpj 136 DO ji = 2, jpi 137 zke2d(ji,jj) = 0.5_wp * ( z2dx(ji,jj) + z2dx(ji-1,jj) & 138 & + z2dy(ji,jj) + z2dy(ji,jj-1) ) * r1_bt(ji,jj,1) 139 END DO 140 END DO 141 CALL iom_put( "ketrd_tau", zke2d ) 142 CALL wrk_dealloc( jpi, jpj , z2dx, z2dy, zke2d ) 143 CASE( jpdyn_bfr ) ; CALL iom_put( "ketrd_bfr", zke ) ! bottom friction (explicit case) 143 144 !!gm TO BE DONE properly 144 145 !!gm only valid if ln_bfrimp=F otherwise the bottom stress as to be recomputed at the end of the computation.... … … 162 163 ! ENDIF 163 164 !!gm end 164 165 CASE( jpdyn_atf ) ; CALL iom_put( "ketrd_atf", zke ) ! asselin filter trends 165 166 !! a faire !!!! idee changer dynnxt pour avoir un appel a jpdyn_bfr avant le swap !!! 166 167 !! reflechir a une possible sauvegarde du "vrai" un,vn pour le calcul de atf.... … … 184 185 ! CALL iom_put( "ketrd_bfri", zke2d ) 185 186 ! ENDIF 186 187 188 189 190 191 192 193 187 CASE( jpdyn_ken ) ; ! kinetic energy 188 ! called in dynnxt.F90 before asselin time filter 189 ! with putrd=ua and pvtrd=va 190 zke(:,:,:) = 0.5_wp * zke(:,:,:) 191 CALL iom_put( "KE", zke ) 192 ! 193 CALL ken_p2k( kt , zke ) 194 CALL iom_put( "ketrd_convP2K", zke ) ! conversion -rau*g*w 194 195 ! 195 196 END SELECT … … 263 264 ENDIF 264 265 ! ! allocate box volume arrays 265 IF 266 IF( trd_ken_alloc() /= 0 ) CALL ctl_stop('trd_ken_alloc: failed to allocate arrays') 266 267 ! 267 268 !!gm IF( .NOT. (ln_hpg_zco.OR.ln_hpg_zps) ) & 268 269 !!gm & CALL ctl_stop('trd_ken_init : only full and partial cells are coded for conversion rate') 269 270 ! 270 IF ( .NOT.lk_vvl ) THEN! constant volume: bu, bv, 1/bt computed one for all271 IF( .NOT.lk_vvl ) THEN ! constant volume: bu, bv, 1/bt computed one for all 271 272 DO jk = 1, jpkm1 272 bu (:,:,jk) = e1u(:,:) *e2u(:,:) * fse3u_n(:,:,jk)273 bv (:,:,jk) = e1v(:,:) *e2v(:,:) * fse3v_n(:,:,jk)273 bu (:,:,jk) = e1e2u(:,:) * fse3u_n(:,:,jk) 274 bv (:,:,jk) = e1e2v(:,:) * fse3v_n(:,:,jk) 274 275 r1_bt(:,:,jk) = 1._wp / ( e1e2t(:,:) * fse3t_n(:,:,jk) ) 275 276 END DO
Note: See TracChangeset
for help on using the changeset viewer.