- Timestamp:
- 2017-05-20T13:49:38+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfsh2.F90
r7997 r8055 5 5 !!===================================================================== 6 6 !! History : - ! 2014-10 (A. Barthelemy, G. Madec) original code 7 !! NEMO 4.0 ! 2017-04 (G. Madec) remove u-,v-pts avm 7 !! NEMO 4.0 ! 2017-04 (G. Madec) remove u-,v-pts avm + ready for coarse-grained Open-MP 8 8 !!---------------------------------------------------------------------- 9 9 … … 11 11 !! zdf_sh2 : compute mixing the shear production term of TKE 12 12 !!---------------------------------------------------------------------- 13 USE oce ! ocean: shared variables14 13 USE dom_oce ! domain: ocean 15 USE zdf_oce ! vertical physics: variables16 14 ! 17 15 USE in_out_manager ! I/O manager … … 23 21 24 22 PUBLIC zdf_sh2 ! called by zdftke, zdfglf, and zdfric 25 23 24 !! * Substitutions 25 # include "domain_substitute.h90" 26 26 !!---------------------------------------------------------------------- 27 27 !! NEMO/OPA 4.0 , NEMO Consortium (2017) … … 31 31 CONTAINS 32 32 33 SUBROUTINE zdf_sh2( psh2 )33 SUBROUTINE zdf_sh2( ARG_2D, pub, pvb, pun, pvn, p_avm, p_sh2 ) 34 34 !!---------------------------------------------------------------------- 35 35 !! *** ROUTINE zdf_sh2 *** … … 46 46 !! NB: wet-point only horizontal averaging of shear 47 47 !! 48 !! ** Action : - p sh2 shear prod. term at w-point (interior oceandomain only)49 !! 48 !! ** Action : - p_sh2 shear prod. term at w-point (inner domain only) 49 !! ***** 50 50 !! References : Bruchard, OM 2002 51 51 !! --------------------------------------------------------------------- 52 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( out) :: psh2 ! shear production of TKE (w-points) 52 INTEGER , INTENT(in ) :: ARG_2D ! inner domain start-end i-indices 53 REAL(wp), DIMENSION(:,:,:) , INTENT(in ) :: pub, pvb, pun, pvn ! before, now horizontal velocities 54 REAL(wp), DIMENSION(:,:,:) , INTENT(in ) :: p_avm ! vertical eddy viscosity (w-points) 55 REAL(wp), DIMENSION(WRK_3D), INTENT( out) :: p_sh2 ! shear production of TKE (w-points) 53 56 ! 54 INTEGER :: ji, jj, jk ! dummy loop arguments55 REAL(wp), DIMENSION( jpi,jpj) :: zsh2u, zsh2v ! 2D workspace57 INTEGER :: ji, jj, jk ! dummy loop indices 58 REAL(wp), DIMENSION(WRK_2De(-1,)) :: zsh2u, zsh2v ! 2D workspace 56 59 !!-------------------------------------------------------------------- 60 ! 57 61 IF( nn_timing == 1 ) CALL timing_start('zdf_sh2') 58 62 ! 59 63 DO jk = 2, jpkm1 60 DO jj = 1, jpjm1!* 2 x shear production at uw- and vw-points (energy conserving form)61 DO ji = 1, jpim162 zsh2u(ji,jj) = ( avm(ji+1,jj,jk) +avm(ji,jj,jk) ) &63 & * ( un(ji,jj,jk-1) -un(ji,jj,jk) ) &64 & * ( ub(ji,jj,jk-1) - ub(ji,jj,jk) ) / ( e3uw_n(ji,jj,jk) * e3uw_b(ji,jj,jk) ) * wumask(ji,jj,jk)65 zsh2v(ji,jj) = ( avm(ji,jj+1,jk) +avm(ji,jj,jk) ) &66 & * ( vn(ji,jj,jk-1) -vn(ji,jj,jk) ) &67 & * ( vb(ji,jj,jk-1) -vb(ji,jj,jk) ) / ( e3vw_n(ji,jj,jk) * e3vw_b(ji,jj,jk) ) * wvmask(ji,jj,jk)64 DO jj = k_Jstr-1, k_Jend !* 2 x shear production at uw- and vw-points (energy conserving form) 65 DO ji = k_Istr-1, k_Iend 66 zsh2u(ji,jj) = ( p_avm(ji+1,jj,jk) + p_avm(ji,jj,jk) ) & 67 & * ( pun(ji,jj,jk-1) - pun(ji,jj,jk) ) & 68 & * ( pub(ji,jj,jk-1) - pub(ji,jj,jk) ) / ( e3uw_n(ji,jj,jk) * e3uw_b(ji,jj,jk) ) * wumask(ji,jj,jk) 69 zsh2v(ji,jj) = ( p_avm(ji,jj+1,jk) + p_avm(ji,jj,jk) ) & 70 & * ( pvn(ji,jj,jk-1) - pvn(ji,jj,jk) ) & 71 & * ( pvb(ji,jj,jk-1) - pvb(ji,jj,jk) ) / ( e3vw_n(ji,jj,jk) * e3vw_b(ji,jj,jk) ) * wvmask(ji,jj,jk) 68 72 END DO 69 73 END DO 70 DO jj = 2, jpjm1!* shear production at w-point71 DO ji = 2, jpim1! coast mask: =2 at the coast ; =1 otherwise (NB: wmask useless as zsh2 are masked)72 p sh2(ji,jj,jk) = 0.25 * ( ( zsh2u(ji-1,jj) + zsh2u(ji,jj) ) * ( 2. - umask(ji-1,jj,jk) * umask(ji,jj,jk) ) &73 & + ( zsh2v(ji,jj-1) + zsh2v(ji,jj) ) * ( 2. - vmask(ji,jj-1,jk) * vmask(ji,jj,jk) ) )74 DO jj = k_Jstr, k_Jend !* shear production at w-point 75 DO ji = k_Jstr, k_Iend ! coast mask: =2 at the coast ; =1 otherwise (NB: wmask useless as zsh2 are masked) 76 p_sh2(ji,jj,jk) = 0.25 * ( ( zsh2u(ji-1,jj) + zsh2u(ji,jj) ) * ( 2. - umask(ji-1,jj,jk) * umask(ji,jj,jk) ) & 77 & + ( zsh2v(ji,jj-1) + zsh2v(ji,jj) ) * ( 2. - vmask(ji,jj-1,jk) * vmask(ji,jj,jk) ) ) 74 78 END DO 75 79 END DO
Note: See TracChangeset
for help on using the changeset viewer.