- Timestamp:
- 2020-07-30T12:12:41+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90
r11442 r13355 20 20 USE zdfkpp ! KPP vertical mixing 21 21 USE trd_oce ! trends: ocean variables 22 USE trdtra ! trends manager: tracers 22 USE trdtra ! trends manager: tracers 23 23 USE in_out_manager ! I/O manager 24 24 USE iom ! for iom_put 25 25 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 26 26 USE timing ! Timing 27 USE stopack 27 USE stopack 28 28 29 29 IMPLICIT NONE … … 45 45 !!---------------------------------------------------------------------- 46 46 !! *** ROUTINE zdf_evd *** 47 !! 47 !! 48 48 !! ** Purpose : Local increased the vertical eddy viscosity and diffu- 49 49 !! sivity coefficients when a static instability is encountered. 50 50 !! 51 51 !! ** Method : avt, avm, and the 4 neighbouring avmu, avmv coefficients 52 !! are set to avevd (namelist parameter) if the water column is 52 !! are set to avevd (namelist parameter) if the water column is 53 53 !! statically unstable (i.e. if rn2 < -1.e-12 ) 54 54 !! … … 77 77 zavt_evd(:,:,:) = avt(:,:,:) ! set avt prior to evd application 78 78 79 #if defined key_traldf_c2d || key_traldf_c3d 79 80 IF( ln_stopack .AND. ( nn_spp_aevd > 0 ) ) THEN 80 81 rn_avevd0(:,:) = rn_avevd 81 82 CALL spp_gen(kt, rn_avevd0, nn_spp_aevd, rn_aevd_sd, jk_spp_aevd) 82 83 ENDIF 84 #else 85 IF ( ln_stopack .AND. ( nn_spp_aevd > 0 ) ) & 86 & CALL ctl_stop( 'zdf_evd: parameter perturbation will only work with '// & 87 'key_traldf_c2d or key_traldf_c3d') 88 #endif 83 89 84 90 SELECT CASE ( nn_evdm ) … … 88 94 zavm_evd(:,:,:) = avm(:,:,:) ! set avm prior to evd application 89 95 ! 90 DO jk = 1, jpkm1 96 DO jk = 1, jpkm1 91 97 DO jj = 2, jpj ! no vector opt. 92 98 DO ji = 2, jpi … … 106 112 END DO 107 113 END DO 108 END DO 114 END DO 109 115 CALL lbc_lnk( avt , 'W', 1. ) ; CALL lbc_lnk( avm , 'W', 1. ) ! Lateral boundary conditions 110 116 CALL lbc_lnk( avmu, 'U', 1. ) ; CALL lbc_lnk( avmv, 'V', 1. ) … … 113 119 CALL iom_put( "avm_evd", zavm_evd ) ! output this change 114 120 ! 115 CASE DEFAULT ! enhance vertical eddy diffusivity only (if rn2<-1.e-12) 121 CASE DEFAULT ! enhance vertical eddy diffusivity only (if rn2<-1.e-12) 116 122 DO jk = 1, jpkm1 117 !!! WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * avevd ! agissant sur T SEUL! 123 !!! WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * avevd ! agissant sur T SEUL! 118 124 DO jj = 1, jpj ! loop over the whole domain (no lbc_lnk call) 119 125 DO ji = 1, jpi 120 126 #if defined key_zdfkpp 121 127 ! no evd mixing in the boundary layer with KPP 122 IF( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 .AND. fsdepw(ji,jj,jk) > hkpp(ji,jj) ) & 128 IF( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 .AND. fsdepw(ji,jj,jk) > hkpp(ji,jj) ) & 123 129 #else 124 130 IF( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) & … … 129 135 END DO 130 136 ! 131 END SELECT 137 END SELECT 132 138 133 139 zavt_evd(:,:,:) = avt(:,:,:) - zavt_evd(:,:,:) ! change in avt due to evd
Note: See TracChangeset
for help on using the changeset viewer.