- Timestamp:
- 2017-07-04T17:46:48+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfphy.F90
r8055 r8279 32 32 USE lbclnk ! lateral boundary conditions 33 33 USE lib_mpp ! distribued memory computing 34 #if defined key_omp 35 USE dom_omp ! omp threads decomposition of MPI subdomain 36 #endif 34 37 35 38 IMPLICIT NONE … … 47 50 48 51 LOGICAL :: l_zdfsh2 ! shear production term flag (=F for CST, =T otherwise (i.e. TKE, GLS, RIC)) 52 INTEGER :: ARG_2D 49 53 50 54 !! * Substitutions … … 216 220 INTEGER, INTENT(in) :: kt ! ocean time-step index 217 221 ! 218 INTEGER :: ji, jj,jk ! dummy loop indice222 INTEGER :: jk ! dummy loop indice 219 223 !!OMP REAL(wp), DIMENSION(WRK_3D) :: zsh2 ! shear production 220 224 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zsh2 ! shear production 221 225 !! --------------------------------------------------------------------- 222 226 ! 223 !!OMP ===>>>> Open-MP to be defined elsewhere 224 ! 225 INTEGER :: ARG_2D 226 ! 227 ! 228 IF (kt==nn_it000) THEN 229 #ifdef key_omp 230 CALL tile_dec_2D 231 #else 227 232 #if defined key_vectopt_loop 228 k_Istr = 1 ; k_Iend= jpi233 tnldi = 1 ; tnlei = jpi 229 234 #else 230 k_Istr = 2 ; k_Iend= jpim1235 tnldi = 2 ; tnlei = jpim1 231 236 #endif 232 k_Jstr = 2 ; k_Jend = jpjm1 233 ! 234 !!OMP <<<<=== end 235 237 tnldj = 2 ; tnlej = jpjm1 238 #endif 239 END IF 240 ! 241 CALL zdf_bfr( kt ) !* bottom friction (if quadratic) 242 ! 243 !$OMP PARALLEL PRIVATE(zsh2) 236 244 ALLOCATE( zsh2(WRK_3D) ) 237 238 239 !240 CALL zdf_bfr( kt ) !* bottom friction (if quadratic)241 !242 243 245 ! !== Kz from chosen turbulent closure ==! (avm_k, avt_k) 244 245 246 IF( l_zdfsh2 ) & !* shear production at w-points (energy conserving form) 246 247 CALL zdf_sh2( ARG_2D, ub, vb, un, vn, avm_k, & ! <<== in fields … … 248 249 249 250 ! 251 !$OMP BARRIER 250 252 SELECT CASE ( nzdf_phy ) !* Vertical eddy viscosity and diffusivity coefficients at w-points 251 253 CASE( np_RIC ) ; CALL zdf_ric( ARG_2D, kt, gdept_n, zsh2, avm_k, avt_k ) ! Richardson number dependent Kz … … 257 259 !!gm avm_k(WRK_3D) = rn_avm0 * wmask(WRK_3D) 258 260 END SELECT 261 ! 262 DEALLOCATE( zsh2 ) 259 263 ! 260 264 ! !== ocean Kz ==! (avt, avs, avm) … … 271 275 ! 272 276 IF( ln_zdfevd ) CALL zdf_evd( ARG_2D, kt, avm, avt ) !* convection: enhanced vertical eddy diffusivity 273 ! 277 274 278 ! !* double diffusive mixing 275 279 IF( ln_zdfddm ) THEN ! update avt and compute avs … … 282 286 IF( ln_zdfswm ) CALL zdf_swm( ARG_2D, kt, avm, avt, avs ) ! surface wave (Qiao et al. 2004) 283 287 IF( ln_zdfiwm ) CALL zdf_iwm( ARG_2D, kt, avm, avt, avs ) ! internal wave (de Lavergne et al 2017) 284 288 !$OMP END PARALLEL 289 ! 285 290 286 291 ! !* Lateral boundary conditions (sign unchanged) … … 301 306 ENDIF 302 307 ! 303 DEALLOCATE( zsh2 )304 !305 308 END SUBROUTINE zdf_phy 306 309
Note: See TracChangeset
for help on using the changeset viewer.